Methodology & Accuracy
This page explains how MTGCalculator.net calculators are built, how their accuracy is verified, and what their limitations are. It exists so you can judge for yourself how much to trust a result — and so that "the calculator said so" never has to be taken on faith.
It is also the root the site's explainers rest on. Seven guides take the engines one at a time and show their arithmetic on fictional inputs: How the monthly payment formula works (the PMT formula and what moves with rate and term), Reading an amortization schedule (the month-by-month rows and extra payments), How affordability is estimated (the two debt-to-income limits and the property-tax rearrangement), Refinance and break-even arithmetic, Fee-adjusted APR explained, Credit card payoff math and Snowball vs. avalanche as the engine runs them. The guides index lists them alongside the four earlier guides on how amortization works, PMI, fixed versus adjustable rates and mortgage points. This page states the conventions once; the sections below show each engine returning a figure under them.
Every result in those sections is an engine output, computed when this page is built by the same engine that runs in your browser on the tool pages, from inputs invented for the example and labelled as such. The only arithmetic this page does itself is to echo an input or a constant in another unit (income ÷ 12, loan − fees, months ÷ 12), to take the difference, product or ratio of two figures already on the page, or to restate a formula the engine applies. No rate, price or balance below is a market figure or a quote.
How MTGCalculator.net calculators are implemented
Every calculator's mathematics lives in small, pure functions written in TypeScript, separate from the page and interface code. Each function declares exactly what inputs it accepts, validates them (rejecting non-numeric, infinite, or out-of-range values), and returns either a typed result or an explicit, human-readable error. The interface layer only formats and displays what the engine returns — it never does its own arithmetic. Calculations run entirely in your browser; your inputs are never sent to a server.
"Either a typed result or an explicit error" is a literal description of the code. Each engine function returns a result object that is one of two shapes: a success carrying the typed value, or a failure carrying a machine-readable code and a plain-language message. There is no third shape, so a function can never hand the interface a NaN, an infinity or a half-filled result — the presentation layer has to handle the failure case before it can read a value. The messages are written for the person at the keyboard, not for a log: asked for a loan term of 99 years, the payment function answers "Terms are limited to 60 years." and the page shows that sentence instead of a number.
Why calculation functions are tested
Separating the math from the interface makes it independently testable, and we use that: an automated test suite runs the engine against standard cases, decimals, negative numbers, zeros, division-by-zero attempts, very large and very small values, and floating-point corner cases before any change ships. Edge cases that once caused a bug become permanent tests, so a fixed problem cannot quietly return.
The worked examples printed on tool pages are computed by the same engine when the page is built. If the copy and the code ever disagreed, the site would fail to build rather than publish inconsistent numbers.
This page is held to the same rule. Each result in the sections below is an engine output interpolated into the text, and the identities the prose asserts — that the total paid equals the loan plus its interest, that a payment for a target month runs back through the payoff loop to that month, that a loan with no fees returns an APR equal to its note rate — are re-checked while the page builds. Each of those identities, if it stopped being true, would stop the build.
The amortization math we use
Payments use the standard amortized-loan (PMT) formula with monthly compounding, the convention behind US mortgages and most consumer loans. A fixed monthly payment covers the interest accrued on the balance that month, and the remainder reduces the principal; the schedule is computed one month at a time so extra payments and payoff dates are exact. Affordability uses the 28/36 debt-to-income guidelines, and property tax that scales with the home price is solved with a closed-form rearrangement rather than an approximation. The engine is validated against known reference figures — for example, a $200,000 loan at 6% over 30 years yields the industry-standard $1,199.10 payment and $231,676 of total interest.
The engines, one at a time
Three modules hold the arithmetic: a finance engine (payments, schedules, the purchase breakdown, affordability, refinancing, down payments, business loans, home-equity lines, biweekly payoff and discount points), a credit engine (auto loans, fee-adjusted APR, credit-card payoff, balance transfers and debt-to-income ratios) and a debt engine (the snowball and avalanche plans). Each subsection below names what one function does, the convention it applies and where it stops, with a figure computed on a fictional input.
The reference loan, recomputed
Asked for the payment on a $200,000 loan at 6% over 30 years, the payment function divides the annual rate by twelve for a monthly rate, multiplies the term by twelve for 360 payments, and returns $1,199.10. The schedule function runs the same loan one month at a time. In month one the debt engine's accrual function — the same balance × APR ÷ 12 rule the schedule applies — charges $200,000 × (6% ÷ 12) = $1,000.00 of interest, so the payment less that interest — $199.10 — reaches the principal. Across year one the schedule records $11,933 of interest against $2,456 of principal, leaving $197,544 owing; in year 30 the split has reversed to $457 of interest against $13,932 of principal. Summing every month gives $231,676 of total interest and $431,676 paid in all — the loan amount plus the interest — with the balance reaching zero in month 360. Those are the figures the automated tests expect and the sentence above states. Here they are interpolated from the engine rather than typed, and the build re-checks them against the same expectations the tests hold — along with the year-one identity that principal repaid plus the balance still owing equals the loan — so an engine change that moved them would fail this page's build as well as the tests.
Extra principal and payoff dates
Because the schedule is computed one month at a time, an extra principal payment changes the payoff month exactly rather than approximately. Adding a fictional $200 a month to the reference loan, the comparison function returns a payoff in 252 months (21 yr) instead of 360, which is 108 months fewer, with total interest of $151,876 against $231,676 — a difference of $79,800 between those two whole-dollar figures (the engine carries the difference unrounded, to the cent). The engine's convention is that the extra is applied every month from the first and reaches the principal after that month's interest has been charged. The scheduled payment itself does not change — $1,199.10 on either path — so the monthly outlay on the extra path is $1,399.10. The engine compares the two paths; it does not recommend one.
Affordability
The affordability function takes gross annual income, existing monthly debts, a down payment, a rate, a term, optional property-tax, insurance and HOA figures and, optionally, the two shares themselves (the tool pages use the guideline defaults), and returns the largest home price whose monthly housing cost fits the debt-to-income guidelines named above. It computes two limits from gross monthly income — a housing share, and a total-debt share less the existing debts — and takes the smaller. For a fictional household with $84,000 of income ($7,000 a month), $350 a month of debts, $25,000 down, 6.5% over 30 years and a 1.1% property-tax rate, the housing limit binds: the budget is $1,960.00, which is 28% of gross monthly income, and the result is marked "front-end". Raise the debts to $900 and the other limit binds: the budget falls to $1,620.00, which together with the debts is 36% of income, and the result is marked "back-end".
From the budget the engine solves for the price directly. The monthly cost of a candidate price is (price − down payment) × payment factor + price × tax rate ÷ 12, where the payment factor is the payment per dollar borrowed at the rate and term — 0.006321 here. Setting that cost equal to the budget — after any insurance ÷ 12 and HOA you enter are subtracted from it (none in this example), and with a rejection if nothing is left — and rearranging gives price = (budget + down payment × factor) ÷ (factor + monthly tax rate), which is what the sentence above means by a closed-form rearrangement rather than an approximation. For the household above the price is $292,651, the loan $267,651, principal and interest $1,691.74 and monthly tax $268.26; the last two add back to the $1,960.00 budget, an identity this page checks when it builds. When the debts exceed the total-debt share there is nothing to solve for, and the engine answers: "Existing debts leave no room in the budget for a housing payment." The limitations below apply to every figure in this section: affordability reflects general lender guidelines, not an underwriting decision.
Refinance and break-even
The refinance function prices the current balance twice: at the current rate over the remaining years, and at the new rate over the new term. On fictional terms — $220,000 owed at 7% with 25 years left, against 5.75% over 25 years and $4,400 of closing costs — the current payment is $1,554.91, the new payment $1,384.03 and the monthly difference $170.88. Break-even is closing costs ÷ monthly difference, 25.7 months here. When the new payment is not lower there is nothing to recoup with, and the engine returns no break-even at all rather than a negative month: were the new rate 8% instead, the monthly difference would be -$143.08 and the break-even empty. The lifetime comparison sets the interest left on the current path — the payment times the remaining months less the balance, $246,474 — against the interest over the new loan's full term, $195,210, less the closing costs: $46,864 here. The refinance guide covers the month-level variant, where closing costs can be rolled into the new principal and a longer new term is compared honestly against the months left on the current one.
Fee-adjusted APR
The APR function takes a loan amount, upfront fees, a note rate and a term. It computes the payment on the full amount at the note rate — $1,108.29 for a fictional $180,000 loan at 6.25% over 30 years, the same figure the payment function returns — and treats the amount received as the loan less the fees: $176,400 after $3,600 of fees. It then searches, by bisection on the monthly rate, for the annual rate at which the present value of those payments equals the net amount received: 6.44%, 0.19 percentage points above the note rate. Bisection is used because the present value falls steadily as the rate rises, so the search cannot miss. With the fees set to zero the net amount equals the loan and the search returns the note rate itself, 6.25%, which this page checks when it builds. The payment never changes; only the APR does.
Credit-card payoff
The card function runs a fixed payment against a revolving balance one month at a time: interest accrues at the APR ÷ 12 on the balance, the payment is subtracted, and the loop ends when the balance is cleared. A fictional $3,600 balance at 22% with a $120 payment clears in 44 months (3 yr 8 mo) after $1,674.41 of interest, $5,274.41 paid in all. The payment must exceed the first month's interest — $66.00 here, $3,600 × 22% ÷ 12 — or the balance never falls, so a $60 payment is refused with the engine's own message: "That payment never pays the card off — the first month's interest alone is more. Pay more than $66.00 per month." The reverse question — the fixed payment that clears the balance in a chosen number of months — is the annuity formula on the card's monthly rate: $186.76 for 24 months. Running that payment back through the payoff loop returns 24 months, as the build confirms.
Snowball and avalanche
The debt engine simulates two orderings of the same payments. Its convention, stated in the engine itself: interest accrues monthly at APR ÷ 12 and payments land at the end of each month. The total monthly outlay is constant — every debt's minimum plus the extra amount — and when a debt is cleared its minimum rolls into the payment on the next target. The snowball targets the smallest starting balance first and the avalanche the highest APR; both orders are fixed from the starting figures before the first month runs, and ties keep the order the debts were entered in. On a fictional set — debt 1, $5,200 at 23% with a $130 minimum; debt 2, $1,800 at 16% with $50; debt 3, $9,500 at 8% with $200 — plus $150 extra, the budget is $530 a month under both strategies. The snowball clears debt 2 in month 10, debt 1 in month 28, debt 3 in month 38, finishing in 38 months with $3,574 of interest; the avalanche clears debt 1 in month 24, debt 2 in month 27, debt 3 in month 38, finishing in 38 months with $3,359. The comparison reports the differences — $215 of interest and 0 months — and ranks nothing; the engine compares, and the reader decides.
Plans accept up to 10 debts and are simulated for at most 1,200 months (100 years). Both limits are enforced in the engine's words. A set of 11 debts returns "This tool supports up to 10 debts." A single debt whose minimum is one cent above its first month of interest passes validation, but its balance falls so slowly that the plan outruns the cap and returns "This plan takes longer than 100 years to finish — raise the payments to see a payoff."
The remaining engines
- Purchase breakdown. Loan = home price − down payment; loan-to-value = loan ÷ price; principal and interest from the payment function; property tax = price × the annual rate you enter ÷ 12; insurance = the annual premium you enter ÷ 12; PMI = loan × the annual PMI rate you enter ÷ 12, included only while the loan-to-value ratio exceeds 80%; HOA dues as entered; total = the sum of those lines.
- Down payment. The down-payment amount, loan and loan-to-value from a price and a percent, plus a flag that is true while loan-to-value exceeds 80% — the condition under which the purchase breakdown includes a PMI line. This page checks the switch when it builds: a loan-to-value of 80% leaves the flag off, and 80.01% turns it on.
- Business loan. An amortized term loan with an origination fee entered in dollars. Paid upfront, the fee is added to the total cost; financed, it increases the principal, so interest accrues on it for the whole term.
- Auto loan. The sales-tax rate you enter is applied to the price less the trade-in value, floored at zero; the tax and fees are financed into the loan with the price less the trade-in and down payment, and the result is amortized like any other loan.
- Home-equity line. The available line is the maximum combined loan-to-value you enter applied to the home value, less the balance already owed, floored at zero; the monthly interest on a drawn amount is drawn × rate ÷ 12.
- Biweekly payoff. Half the monthly payment every two weeks — 26 half payments a year — simulated with a periodic rate of the annual rate ÷ 26 and compared against the monthly path's total interest — the monthly payment multiplied by the term, less the principal, a closed-form total rather than a schedule sum, which agrees with the schedule's sum to well under a cent, because both use the unrounded payment. On the reference loan the half payment is $599.55 and the monthly path's interest is $231,676.38 against the schedule's $231,676.38, as the build confirms.
- Discount points. The payment at the quoted rate against the payment at the bought-down rate, with a point priced at 1% of the loan — $2,000 for 1 point on the reference loan, as the build confirms; break-even is the points cost ÷ the monthly difference, and the held-to-term figure is the monthly difference × the months less the cost.
- Refinance break-even. The month-level variant of the refinance comparison: terms in months, closing costs optionally rolled into the new principal, and the new loan's total interest set against the interest left on the current path, with a positive difference meaning the new loan pays more lifetime interest.
- Balance transfer. The transfer fee is added to the transferred balance, the intro months accrue no interest, the remaining balance accrues at the post-intro APR ÷ 12 thereafter, and the same fixed payment is applied on both paths.
- Debt-to-income ratios. Front-end = housing payment ÷ gross monthly income; back-end = (housing + other debts) ÷ gross monthly income.
Constants and limits the engines enforce
The engines refuse inputs outside their supported ranges before any arithmetic runs. The limits below are read from the code when this page is built, or quoted in the engine's own rejection messages, rather than typed.
- Debt sets: up to 10 debts per plan.
- Plan length: 1,200 months of simulation (100 years); a plan still open after that is reported as out of range.
- Loan terms: "Terms are limited to 60 years."
- Interest rates: "Enter an interest rate below 100%." A negative rate is refused as well.
- Money amounts: "The loan amount is larger than this tool supports."
- Card APRs and target months: "Enter an APR between 0 and 200 percent." and "Enter a payoff time from 1 to 600 months."
- Input magnitude: the shared parser that turns typed text into a number accepts values up to ±1,000,000,000,000,000 and rejects grouping commas rather than silently stripping them, to avoid misreading locales that use the comma as a decimal separator.
- Terms in months: years × 12, rounded to a whole number of months after validation and before any arithmetic runs. Partial months are not modelled.
How rounding is handled
- Internally, every calculation keeps the full precision of IEEE-754 double-precision arithmetic — nothing is rounded between steps, so month-by-month schedules accumulate accurately across hundreds of payments.
- On screen, money is rounded to the cent (or to whole dollars for large totals like lifetime interest), which is how lenders present figures. Percentages such as loan-to-value are shown to a small number of decimals.
The practical consequence: a displayed monthly payment of $1,199.10 is
the rounded view of a more precise internal value. Your lender's figure may differ by a few cents
depending on their rounding and day-count conventions — the difference is presentational, not an error.
To eight decimals, the internal value behind that display is 1,199.10105031. The schedule carries that unrounded payment through every month and sums the interest it charges; the $231,676 of total interest is that sum, and the $431,676 paid is the loan plus that sum — not a rounded payment times the term. The two differ only in the cents the whole-dollar display drops: to the cent the schedule's total is $431,676.38, while the displayed $1,199.10 × 360 would be $431,676.00. The formatting layer's documented policy is to keep that precision internally, normalize a value to 12 significant digits immediately before display so that binary floating-point artifacts do not appear on screen, and then round to the places shown.
Common misreadings
- "Total interest" and "total of payments" are not the monthly total times the term. Total interest is summed from the month-by-month schedule, and the total of payments is the loan amount plus that interest — $431,676 for the reference loan. Tax, insurance, PMI and HOA lines are not in either figure.
- The APR is not a second payment. The fee-adjusted APR describes the same payments as the note rate does; it changes what the loan is said to cost, not what is paid each month. $1,108.29 is the payment at both 6.25% and 6.44% in the example above.
- "Months to debt-free" is not a sum. It is the month in which the last debt clears — 38 for the avalanche above — not the individual debts' months added together. The debts are paid in parallel; only the remainder of the budget is sequential.
- An empty break-even is not a break-even of zero. The refinance functions return no break-even when the new payment is not lower, because there is no monthly difference to recoup the costs with.
- Loan-to-value is the starting ratio. The purchase breakdown reports it at the first month and does not update it as the balance falls, which is also why the PMI line is a monthly amount and not a lifetime total.
- A rejection is not a crash. A sentence in place of a number means the engine refused the input on purpose, and the sentence says why.
Limitations to keep in mind
- The calculators model fixed-rate, fully amortizing loans. They do not model adjustable-rate mortgages, interest-only periods, balloon payments, or negative amortization.
- Property tax, insurance, PMI, and HOA are estimates from the rates and amounts you enter. Real figures vary by locality, reassessment, coverage, and lender, and PMI removal timing depends on your specific loan program.
- Affordability reflects general lender guidelines, not an underwriting decision. Actual approval depends on credit, employment history, the loan program, and lender-specific overlays.
- A correct calculation can still be the wrong calculation for your situation — choosing the right loan for a real-world decision is judgment we cannot automate.
For consequential financial decisions, verify results independently and consult a licensed mortgage professional. These tools are educational estimates, not financial advice.
Reporting a suspected issue
If a MTGCalculator.net result looks wrong, we want to know. Send the tool name, the exact inputs, the result you saw, and the result you expected via the contact page. Confirmed issues are fixed in the engine and locked in with a new automated test.
Last reviewed: 5 October 2026. The figures on this page are recomputed every time the site is built; the date records when the prose was last checked against the engines and the guides it introduces.