- Amortization schedule
An amortization schedule is a table detailing each periodic payment on a
amortizing loan(typically a mortgage), as generated by an amortization calculator.
While a portion of every payment is applied towards both the
interestand the principal balanceof the loan, the exact amount applied to principal each time varies (with the remainder going to interest). An amortization schedule reveals the specific monetary amount put towards interest, as well as the specific put towards the Principal balance, with each payment. Initially, a large portion of each payment is devoted to interest. As the loan matures, larger portions go towards paying down the principal.
Many kinds of amortization exist, including:
*Straight line (linear)
*Bullet (all at once)
*Increasing balance (
negative amortization) Amortizationschedules run in chronological order. The first payment is assumed to take place one full payment period after the loan was taken out, not on the first day (the amortization date) of the loan. The last payment completely pays off the remainder of the loan. Often, the last payment will be a slightly different amount than all earlier payments.
In addition to breaking down each payment into interest and principal portions, an amortization schedule also reveals
interest-paid-to-date, principal-paid-to-date, and the remaining principal balance on each payment date.
Example amortization schedule
(To run your own numbers, try an
This amortization schedule is based on the following assumptions:
*Principal = $100,000
Interestrate = 8%
*Number of payments = 360 (30 years x 12 months x 1 payment per month)
*Fixed Monthly Payment = $733.76
"Note: Rounding errors mean that, depending how the lender accumulates these errors, the blended payment (principal + interest) may vary slightly some months to keep these errors from accumulating; or, the accumulated errors are adjusted for at the end of each year, or at the final loan payment."
There are a few crucial points worth noting when mortgaging a home with an amortized loan. First, there is substantial disparate allocation of the monthly payments toward the interest, especially during the first 18 years of the mortgage. In the example above, Payment 1 allocates about 80-90% of the total payment towards interest and only $67.09 (or 10-20%) toward the
Principal balance. The exact percentage allocated towards payment of the principal depends on the interest rate. Not until payment 257 or 21 years into the loan does the payment allocation towards principal and interest even out and subsequently tip the majority of the monthly payment toward Principal balance pay down.
Second, understanding the above statement, the repetitive refinancing of an amortized mortgage loan, even with decreasing interest rates and decreasing Principal balance, can cause the borrower to pay over 500% of the value of the original loan amount. 'Re-amortization' or restarting the amortization schedule via a refinance causes the entire schedule to restart: the new loan will be 30 years from the refinance date, and initial payments on this loan will again be largely interest, not principal. If the rate is the same, say 8%, then the interest/principal allocation will be the same as at the start of the original loan (say, 90/10). This economically unfavorable situation is often mitigated by the apparent decrease in monthly payment and interest rate of a refinance, when in fact the borrower is increasing the total cost of the property. This fact is often (understandably) overlooked by borrowers.
Third, the payment on an amortized mortgage loan remains the same for the entire loan term, regardless of Principal balance owed. For example, the payment on the above scenario will remain $733.76 regardless if the Principal balance is $100,000 or $50,000. Paying down large chunks of the Principal balance in no way affects the monthly payment, it simply reduces the term of the loan and reduces the amount of interest that can be charged by the lender resulting in a quicker payoff. To avoid these caveats of an amortizing mortgage loan many borrowers are choosing an
Interest-only loanto satisfy their mortgage financing needs. Interest-only loans have their caveats as well which must be understood before choosing the mortgage payment term that is right for the individual borrower.
Creating an Amortization Schedule
In order to create an amortization schedule, you will need to use the following formula to calculate a periodic payment, "A":
Where "P" is the principal, "i" is the periodic interest rate, and "n" is the number of periods (payments) in which the principal is to be paid. For monthly payments, the periodic interest rate "i" is the annual interest rate divided by 12 (number of periods per year), and the number of periods "n" is the number of years times 12 (again, number of periods per year).
Once you determine the fixed monthly payment using the formula above, you can determine the allocation of each payment between interest and principal. The amount of principal paid each month is the difference between the monthly payment amount and the amount of interest due on the balance for that month.
First, determine the amount of interest due for a payment by multiplying the periodic interest rate by the outstanding principal (for monthly payments, divide the annual rate by 12 to get the periodic rate). For the first payment, the outstanding principal is the full loan amount. Second, determine the amount of principal paid by subtracting the interest due from the total monthly payment amount. Finally, subtract the amount of principal paid from the outstanding loan amount to determine the new principal balance. Repeat the calculation for each following period (month) using the previous month's ending balance as the next month's outstanding principal in the calculation of interest due.
As you get near the end of the loan, the loan balance (principal) gets smaller and less interest is due. Since the monthly payment amount stays the same (at least for a standard 15 or 30 year mortgage) and the interest due decreases, you apply an increasingly larger amount of each successive payment towards the principal. For your last few payments, you owe very little interest on the small remaining balance, so you pay off the remaining principal very quickly.
As a simple example, let's say that we're lending $100 at a 10% a year to be paid back in five years using annual payments. The payments would be:
We can now create a table detailing the principal, and interest.
As you can see, the amount of interest due each year is 10% of the balance. The amount paid towards the principal is the difference between the fixed annual payment (determined by the formula) and the annual interest due.
ample VB.NET Program
The following code sample is intended for use in a Microsoft Visual Basic .NET 2005 Windows Console application. With minimal effort is could be converted to work in an ASP.NET or Windows Forms environment. Considering the formula in the previous section, this program will generate payments P1 through Pn-1 having an amount equal to P. Payment Pn will be adjusted to account for any rounding errors. Pn may be less than, equal to, or greater than P.
' ~120% APR w/ five monthly payments on $100.00 loan WritePaymentSchedule(120 / 100 / 12, 5, 100)
' ~140% APR w/ 19 bi-weekly payments on $2500.00 loan WritePaymentSchedule(140 / 100 / 365 * 14, 19, 2500)
' Create a simple interest amoritization schedule, rounding each periodic interest payment to the nearest 1/100th (US penny) Sub WritePaymentSchedule(ByVal PeriodicRate As Double, ByVal NumberOfPeriods As Integer, ByVal LoanAmount As Decimal)
Dim decI, decPmt As Decimal Dim decTotP, decTotI, decTotPmt As Decimal Dim strP, strI, strBal, strPmtAmount As String Dim intColWidth As Integer = 12
' get the simple interest payment decPmt = GetRoundedSimpleInterestPayment(PeriodicRate, NumberOfPeriods, LoanAmount)
' Write out pretty header Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - 6 Console.Write("Payment") Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - 7 Console.Write("Principal") Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - 5 Console.Write("Interest") Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - 3 Console.Write("Balance") Console.WriteLine()
' Write out starting balance Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - Format(LoanAmount, "0.00").Length + 4 Console.Write(Format(LoanAmount, "0.00")) Console.WriteLine()
' make a pretty payment amount strPmtAmount = Format(decPmt, "0.00")
For intX As Integer = 1 To NumberOfPeriods
' figure out amount of current payment that goes to interest decI = CDec(Math.Round(LoanAmount * PeriodicRate, 2))
' adjust the last payment to account for accumulated rounding errors If intX = NumberOfPeriods Then decPmt = LoanAmount + decI strPmtAmount = Format(decPmt, "0.00") End If
decTotP += decPmt - decI decTotI += decI decTotPmt += decPmt
' reduce the loan balance by the amount of the principal payment LoanAmount -= decPmt - decI
' make pretty strings for output strI = Format(decI, "0.00") strP = Format(decPmt - decI, "0.00") strBal = Format(LoanAmount, "0.00")
' output the pretty values that make up one line in the amort schedule Console.CursorLeft = NumberOfPeriods.ToString.Length - intX.ToString.Length Console.Write(intX.ToString) Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - strPmtAmount.Length + 1 Console.Write(strPmtAmount) Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - strP.Length + 2 Console.Write(strP) Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - strI.Length + 3 Console.Write(strI) Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - strBal.Length + 4 Console.Write(strBal) Console.WriteLine()
' Write out totals Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - Format(decTotPmt, "0.00").Length + 1 Console.Write(Format(decTotPmt, "0.00")) Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - Format(decTotP, "0.00").Length + 2 Console.Write(Format(decTotP, "0.00")) Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - Format(decTotI, "0.00").Length + 3 Console.Write(Format(decTotI, "0.00")) Console.WriteLine()
' Calculates a loan payment using simple interest - this is the same as the Excel PMT function except we round to the nearest 1/100th (US penny) Function GetRoundedSimpleInterestPayment(ByVal RatePerPeriod As Double, ByVal NumberOfPeriods As Integer, ByVal LoanAmount As Double) As Decimal
Return CDec(Math.Round((RatePerPeriod * LoanAmount * (1 + RatePerPeriod) ^ NumberOfPeriods) / ((1 + RatePerPeriod) ^ NumberOfPeriods - 1), 2))
The output from the above program is as follows:
Payment Principal Interest Balance 100.001 26.38 16.38 10.00 83.622 26.38 18.02 8.36 65.603 26.38 19.82 6.56 45.784 26.38 21.80 4.58 23.985 26.38 23.98 2.40 0.00 131.90 100.00 31.90
Payment Principal Interest Balance 2500.00 1 213.14 78.89 134.25 2421.11 2 213.14 83.13 130.01 2337.98 3 213.14 87.59 125.55 2250.39 4 213.14 92.30 120.84 2158.09 5 213.14 97.25 115.89 2060.84 6 213.14 102.48 110.66 1958.36 7 213.14 107.98 105.16 1850.38 8 213.14 113.78 99.36 1736.60 9 213.14 119.89 93.25 1616.7110 213.14 126.32 86.82 1490.3911 213.14 133.11 80.03 1357.2812 213.14 140.26 72.88 1217.0213 213.14 147.79 65.35 1069.2314 213.14 155.72 57.42 913.5115 213.14 164.09 49.05 749.4216 213.14 172.90 40.24 576.5217 213.14 182.18 30.96 394.3418 213.14 191.96 21.18 202.3819 213.25 202.38 10.87 0.00 4049.77 2500.00 1549.77
* [http://demonstrations.wolfram.com/AmortizedLoanInterestAndPrincipal/ Amortized Loan Interest and Principal] by Fiona Maclachlan,
The Wolfram Demonstrations Project.
* [http://office.microsoft.com/en-us/excel/HA010346401033.aspx Using the Loan amortization and Loan analysis templates] for Microsoft Excel
Wikimedia Foundation. 2010.