function calculateMortgageSavings() {
// 1. Get and Validate Inputs
var balanceInput = document.getElementById('mpc_balance');
var rateInput = document.getElementById('mpc_rate');
var termInput = document.getElementById('mpc_term');
var extraInput = document.getElementById('mpc_extra');
var resultArea = document.getElementById('mpc_result_area');
var balance = parseFloat(balanceInput.value);
var rate = parseFloat(rateInput.value);
var years = parseFloat(termInput.value);
var extraPayment = parseFloat(extraInput.value);
// Default extra payment to 0 if empty
if (isNaN(extraPayment)) {
extraPayment = 0;
}
// Basic validation
if (isNaN(balance) || balance <= 0 || isNaN(rate) || rate < 0 || isNaN(years) || years <= 0) {
alert("Please enter valid positive numbers for Balance, Interest Rate, and Term.");
return;
}
// 2. Setup Calculation Variables
var monthlyRate = rate / 100 / 12;
var totalMonthsOriginal = years * 12;
// Calculate Standard Monthly Principal & Interest (P&I)
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var numerator = monthlyRate * Math.pow(1 + monthlyRate, totalMonthsOriginal);
var denominator = Math.pow(1 + monthlyRate, totalMonthsOriginal) – 1;
var baseMonthlyPayment = balance * (numerator / denominator);
// Handle edge case where interest rate is 0
if (rate === 0) {
baseMonthlyPayment = balance / totalMonthsOriginal;
}
// 3. Loop 1: Original Schedule (No Extra Payment)
var balOrig = balance;
var totalInterestOrig = 0;
for (var i = 0; i < totalMonthsOriginal; i++) {
var interestPayment = balOrig * monthlyRate;
var principalPayment = baseMonthlyPayment – interestPayment;
totalInterestOrig += interestPayment;
balOrig -= principalPayment;
if (balOrig 0 && monthsNew balNew) {
principalPaymentNew = balNew;
}
totalInterestNew += interestPaymentNew;
balNew -= principalPaymentNew;
monthsNew++;
}
// 5. Calculate Metrics
var monthsSaved = totalMonthsOriginal – monthsNew;
var yearsSaved = Math.floor(monthsSaved / 12);
var remainderMonthsSaved = Math.ceil(monthsSaved % 12);
var interestSaved = totalInterestOrig – totalInterestNew;
// Date Calculations
var today = new Date();
var origPayoffDate = new Date(today.getFullYear(), today.getMonth() + totalMonthsOriginal, 1);
var newPayoffDate = new Date(today.getFullYear(), today.getMonth() + monthsNew, 1);
var options = { year: 'numeric', month: 'long' };
// 6. Update DOM
document.getElementById('mpc_orig_date').innerHTML = origPayoffDate.toLocaleDateString('en-US', options);
document.getElementById('mpc_new_date').innerHTML = newPayoffDate.toLocaleDateString('en-US', options);
var timeSavedText = yearsSaved + " years, " + remainderMonthsSaved + " months";
if (yearsSaved === 0) timeSavedText = remainderMonthsSaved + " months";
document.getElementById('mpc_time_saved').innerHTML = timeSavedText;
// Currency formatting
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
document.getElementById('mpc_interest_saved').innerHTML = formatter.format(interestSaved);
// Show results
resultArea.style.display = 'block';
}
How Extra Mortgage Payments Save You Money
Making extra payments toward your mortgage principal is one of the most effective guaranteed returns on investment available to homeowners. By reducing the principal balance faster than the amortization schedule dictates, you reduce the amount of interest charged in every subsequent month.
Even small additional contributions can result in significant savings over the life of a loan. For example, on a $300,000 mortgage at 6.5% interest over 30 years, adding just $100 extra per month can save you over $45,000 in interest and shorten your loan term by more than 3 years.
Understanding the Calculations
This calculator determines your savings by comparing two amortization schedules:
Standard Schedule: Calculates total interest based on your required minimum monthly payment (Principal + Interest).
Accelerated Schedule: Recalculates the loan balance month-by-month, applying your extra payment directly to the principal balance after interest is paid.
Strategies for Early Payoff
There are several ways to structure your extra payments using the tool above:
Monthly Top-Up: Round up your payment. If your mortgage is $1,450, pay $1,500. The extra $50 goes straight to principal.
Bi-Weekly Payments: By paying half your mortgage every two weeks, you make 26 half-payments a year (equivalent to 13 full payments), effectively making one extra payment annually without feeling the pinch.
Lump Sum Windfalls: Apply tax refunds or annual bonuses directly to the principal. You can simulate this in the calculator by dividing your lump sum by 12 and adding it to the "Extra Monthly Payment" field to see the annualized impact.
Is Paying Off Your Mortgage Early Right for You?
While the guaranteed interest savings are attractive, consider your opportunity cost. If your mortgage rate is 3% but you can earn 7% in the stock market, investing the extra money might yield a higher net worth. However, for many homeowners, the psychological freedom of being debt-free outweighs the mathematical arbitrage.