Source: https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/mechanism/

instrument mechanism / verified-clean

# Extra-Payment Payoff Impact mechanism

The inspectable method record for Extra-Payment Payoff Impact, kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The educational-only and non-individualized-advice labeling is appropriate, but the specification needs an exact recurrence, PMT definition, baseline definition, rate convention, final-payment rule, validation constraints, and one-time-payment timing before the formula can receive PASS.

- The formula is too abbreviated to be independently verified: it does not specify the balance recurrence, interest accrual timing, payment timing, or whether the rate is nominal or effective.

- PMT is referenced but its formula and required inputs are not specified. A standard monthly PMT requires principal, periodic interest rate, and number of periods.

- The comparison baseline is not explicitly defined. Interest saved and months saved must compare against the original schedule using the scheduled payment with no extra payment.

- The treatment of the final partial payment is unspecified. A correct implementation should cap the final payment at the remaining balance after interest rather than charging the full PMT+extra.

- One-time extra payments are listed as an input mode, but the formula only describes adding extra to every period. The timing of a one-time payment—origination, immediately before a scheduled payment, or after a scheduled payment—is unspecified.

- The formula does not state whether extra payments reduce the term while the scheduled payment remains fixed, or whether the loan is formally re-amortized to a new scheduled payment. Those are different calculations.

## Units and conventions

- Test vectors assume monthly payments, monthly compounding, and a nominal annual interest rate divided by 12 to obtain the monthly rate.

- Interest is accrued first each month, then the payment is applied: new_balance = old_balance * (1 + monthly_rate) - payment.

- The final payment is the exact remaining balance after that month's interest and is not replaced by the full scheduled-plus-extra amount.

- Months saved means original payoff-period count minus accelerated payoff-period count; it does not account for calendar-day differences.

- Dates assume the first payment is one month after the supplied start date and payments occur on the same day of each month.

- For the one-time test vector only, the extra payment is assumed to occur immediately at origination before any interest accrues.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "principal": 1000,
    "annual_rate": 0.12,
    "term_months": null,
    "scheduled_payment": 250,
    "extra_payment": 100,
    "frequency": "monthly",
    "extra_mode": "per_period",
    "start_date": "2025-01-01"
  },
  "expected_outputs": {
    "new_payoff_date": "2025-04-01",
    "original_payoff_date": "2025-06-01",
    "interest_saved": 5.9927976,
    "months_saved": 2
  },
  "working": "Monthly rate = 0.12 / 12 = 0.01. Original schedule: B1 = 1000*1.01 - 250 = 760; B2 = 760*1.01 - 250 = 517.6; B3 = 517.6*1.01 - 250 = 272.776; B4 = 272.776*1.01 - 250 = 25.50376; B5 = 25.50376*1.01 = 25.7587976, so the final original payment is 25.7587976 and original interest = 25.7587976. Accelerated payment = 250 + 100 = 350. B1 = 1000*1.01 - 350 = 660; B2 = 660*1.01 - 350 = 316.6; B3 = 316.6*1.01 = 319.766, so the final accelerated payment is 319.766 and accelerated interest = 2*350 + 319.766 - 1000 = 19.766. Interest saved = 25.7587976 - 19.766 = 5.9927976. Months saved = 5 - 3 = 2. The third payment is on 2025-04-01."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

A payment equal to the periodic interest on the initial principal produces a zero denominator in the closed-form payoff calculation and an invariant balance, so the loan never pays off. The instrument must reject or explicitly report this undefined/no-payoff case. Sign conventions for extra_payment can also change a valid payoff into this no-payoff case.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/qualification/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json`

- `evidence-tranche3/tranche3-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
