Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-with-binding-errata

Loan/Mortgage Payment mechanism

The inspectable method record for Loan/Mortgage Payment, kept separate from implementation and qualification.

Status: VERIFIED_WITH_ERRATALifecycle: verified-with-binding-errata

Model scope

The honest educational label is appropriate and correctly identifies excluded taxes, insurance, and PMI, provided those costs are not implied to be included. The catalog entry should define rate convention, payment timing, zero-rate behavior, validation constraints, rounding policy, and explicit formulas for total interest and total paid before release.

  • The payment formula is correct for a fixed-rate, fully amortizing ordinary annuity when r is the periodic rate and n is the total number of payments.
  • The specification does not define the required conversions: n must equal term_years multiplied by payments_per_year, and r must be defined from the annual rate.
  • The formula is undefined at a zero periodic rate because it produces 0/0; the required zero-rate branch is payment = principal/n.
  • Formulas for the stated outputs total interest and total paid are missing. For an unrounded payment, total_paid = payment × n and total_interest = total_paid − principal.
  • The formula assumes payments occur at the end of each period. An annuity-due schedule would require multiplying the ordinary-annuity payment by (1 + r).
  • The formula does not specify whether annual rate means nominal APR, converted by r = annual_rate/payments_per_year, or effective annual rate, converted by r = (1 + annual_rate)^(1/payments_per_year) − 1.

Units and conventions

  • Annual rate inputs are decimal rates: 6% is entered as 0.06, not 6.
  • For the test vectors, annual rate is treated as a nominal annual rate and periodic rate is annual_rate/payments_per_year.
  • term years is converted to an integer number of periods: n = term_years × payments_per_year.
  • Payments are assumed to be equal, fixed, and made at the end of each period.
  • Expected totals use the unrounded formula payment, with displayed monetary outputs rounded to cents.

Inspectable vector

One of 4 source-bound review vectors:

{
  "inputs": {
    "principal": 300000,
    "annual_rate": 0.06,
    "term_years": 30,
    "payments_per_year": 12
  },
  "expected_outputs": {
    "payment": 1798.64,
    "total_interest": 347511.56,
    "total_paid": 647511.56
  },
  "working": "r = 0.06 / 12 = 0.005; n = 30 × 12 = 360. (1+r)^n = 1.005^360 ≈ 6.022575. payment = 300000 × 0.005 × 6.022575 / (6.022575 − 1) ≈ 1798.6432 → 1798.64. total_paid = 1798.6432 × 360 ≈ 647511.5563 → 647511.56. total_interest = 647511.5563 − 300000 ≈ 347511.5563 → 347511.56."
}

Failure boundary

BREAK_CLAIMED · SELF_FLAGGED

The literal formula produces an undefined 0/0 result at an exactly zero interest rate, even though the mathematically valid limiting payment is principal divided by the number of periods. A zero-term input also produces division by zero and must be rejected. Annual-rate convention ambiguity can materially change the payment.

Other records

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json
  • evidence-tranche2/tranche2-results.json
  • BOUNDARY_HAZARD_CATALOG.json