Please enter valid positive numbers for all fields.
New Payoff Time:–
Time Saved:–
Original Total Interest:–
New Total Interest:–
Total Interest Saved:–
function calculateMortgagePayoff() {
// Get Input Values
var balance = parseFloat(document.getElementById("mpc_balance").value);
var rate = parseFloat(document.getElementById("mpc_rate").value);
var years = parseFloat(document.getElementById("mpc_years").value);
var extra = parseFloat(document.getElementById("mpc_extra").value);
// Validation
var errorDiv = document.getElementById("mpc_error");
var resultDiv = document.getElementById("mpc_results");
if (isNaN(balance) || isNaN(rate) || isNaN(years) || balance <= 0 || rate <= 0 || years <= 0) {
errorDiv.style.display = "block";
resultDiv.style.display = "none";
return;
}
// Handle optional extra payment if empty or negative
if (isNaN(extra) || extra 0) {
// Safety break for infinite loops in case of weird inputs
if (newMonths > 1000) break;
var interestForMonth = currentBalance * monthlyRate;
var principalForMonth = actualPayment – interestForMonth;
// If last payment
if (currentBalance < principalForMonth) {
totalInterestNew += interestForMonth;
currentBalance = 0;
newMonths++;
break;
}
totalInterestNew += interestForMonth;
currentBalance -= principalForMonth;
newMonths++;
}
// Calculate Savings
var interestSaved = totalInterestOrig – totalInterestNew;
var monthsSaved = totalMonthsOrig – newMonths;
// Convert Months Saved to Years/Months
var yearsSaved = Math.floor(monthsSaved / 12);
var monthsRemSaved = Math.round(monthsSaved % 12);
// Convert New Time to Years/Months
var newYears = Math.floor(newMonths / 12);
var newMonthsRem = Math.round(newMonths % 12);
// Format Strings
var timeSavedStr = yearsSaved + " Years, " + monthsRemSaved + " Months";
var newTimeStr = newYears + " Years, " + newMonthsRem + " Months";
// Formatter for Currency
var currencyFormat = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
// Update DOM
document.getElementById("mpc_new_time").innerText = newTimeStr;
document.getElementById("mpc_time_saved").innerText = timeSavedStr;
document.getElementById("mpc_orig_interest").innerText = currencyFormat.format(totalInterestOrig);
document.getElementById("mpc_new_interest").innerText = currencyFormat.format(totalInterestNew);
document.getElementById("mpc_savings").innerText = currencyFormat.format(interestSaved);
resultDiv.style.display = "block";
}
Why Use a Mortgage Payoff Calculator?
Understanding the impact of extra payments on your mortgage is crucial for financial freedom. A standard 30-year fixed-rate mortgage is structured so that the majority of your early payments go toward interest, not the principal balance. This Mortgage Payoff Calculator allows you to visualize how even small additional contributions can drastically reduce your loan term and save you thousands of dollars in interest.
How Extra Payments Reduce Interest
Mortgage interest is calculated daily or monthly based on your outstanding principal balance. When you make a payment:
First, the accrued interest is paid.
The remainder reduces the principal.
By adding an Extra Monthly Payment, 100% of that extra amount goes directly to reducing the principal. This lowers the balance used to calculate the next month's interest, creating a snowball effect that accelerates your payoff date.
Example Calculation
Consider a typical scenario to understand the potential savings:
Loan Balance: $200,000
Interest Rate: 4.5%
Remaining Term: 25 Years
By paying just $100 extra per month, you could shave roughly 3 years off your mortgage and save over $18,000 in interest payments. Use the calculator above to input your specific numbers to see exactly how soon you can be debt-free.
Definitions
Current Loan Balance: The amount you currently owe on your home loan today, not the original loan amount.
Remaining Term: How many years are left on your mortgage contract.
Interest Rate: The annual percentage rate (APR) of your current mortgage.