Navigation: Templates > Guide to all Templates > Additional Libraries and Templates > Finance Library >====== AMORTIZE (amortize loan for specific number of payments) ====== | ![]() ![]() ![]() |
AMORTIZE(balance,rate,payment,totalpayments,principal,interest,endbalance)
AMORTIZE | Calculates principal, interest, and remaining balance for a payment or payments. |
balance | A numeric constant or variable containing the loan balance. |
rate | A numeric constant or variable containing the periodic interest rate applied for a single period. |
payment | A numeric constant or variable containing the desired payment (a negative number). |
totalpayments | A numeric constant or variable containing the number of payments to amortize. |
principal | The label of a DECIMAL variable to receive the portion of the payment(s) applied to pay back the loan (a negative number). |
interest | The label of a DECIMAL variable to receive the portion of the payment(s) applied towards loan interest (a negative number). |
endbalance | The label of a DECIMAL variable to receive the remaining loan balance. |
The AMORTIZE procedure shows precisely which portion of a loan payment, or payments, constitutes interest and which portion constitutes repayment of the principal amount borrowed. The computed amounts are based upon a loan balance (balance), a periodic interest rate (rate), the payment amount (payment) and the number of payments (totalpayments). The remaining balance (endbalance) is also calculated.
Periodic rate may be calculated as follows:
PeriodicRate = AnnualInterestRate / (PeriodsPerYear * 100)
The return parameters principal, interest, and endbalance must be DECIMAL values (passed by value).
Internal Formulas:
Example:
Principal DECIMAL(18,2)
Interest DECIMAL(18,2)
EndingBalance DECIMAL(18,2)
CODE
BeginningBalance = LoanAmount !Set first beginning balance
Period# = 1 !Begin with the first period
LOOP Ptr# = Period# TO TotalPeriods !Loop through the periods
AMORTIZE(BeginningBalance,MonthlyRate,Payment,1, |
Principal,InterestAmount,EndingBalance) !Amortize 1 payment
Q:Balance = BeginningBalance !Show the beginning balance
Q:Payment = Payment * (-1) !..the payment amount
Q:Principal = Principal * (-1) !..amount applied to principal
Q:Interest = InterestAmount * (-1) !..amount applied to interest
Q:NewBalance = EndingBalance !…ending balance
IF Ptr# = TotalPeriods| !If last period
AND EndingBalance <; 0 !and balance went negative
Q:Principal += EndingBalance !adjust principal downard
Q:Payment += EndingBalance !and also the payment
Q:NewBalance = 0.0 !and make the balance zero.
END
EndingBalance = Q:NewBalance !Save the ending balance
ADD(AmortizeQue) !Add all period values to Q
BeginningBalance = EndingBalance !Make a new beginning balance
TotalInterest += Q:Interest !Add up total interest
END !End loop