Function pmtinc(nper As Integer, morate As Single, cpv As Double, rateinc As Single, Optional chgnper = 12) As Double
Dim pctr As Integer, i As Integer
Dim rsulta As Double, rsultb As Double
Dim emi As Double, emib As Double, emic As Double
emi = Pmt(morate, nper, cpv)
emi = emi * ((1 + rateinc) ^ -(nper / chgnper))
Do
pctr = pctr + 1
rsultb = rsulta
emic = emib
emib = emi
rsulta = Abs(cpv)
For i = 1 To (nper / chgnper)
rsulta = -FV(morate, chgnper, emi, rsulta)
emi = emi * (1 + rateinc)
Next i
If WorksheetFunction.Round(rsulta, 2) = 0 Then Exit Do
If pctr = 1 Then
If rsulta > 0 Then
emi = emib * 1.1
Else
emi = emib * 0.9
End If
Else
If rsultb - rsulta = 0 Then Exit Do
emi = emib - ((rsulta / (rsultb - rsulta)) * (emic - emib))
End If
Loop Until pctr > 500
pmtinc = emib
End Function
|