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

instrument / verified-clean

# Extra-Payment Payoff Impact

The current ledger marks this instrument verified clean within the source-bound verification corpus.

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

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/extra-payment-payoff-impact/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Finance, Economics & Business (educational only — never individualized investment, tax, or legal advice)

**Tranche**: tranche-3

**Evidence ID**: t3-020

**Ledger rows**: 1

No ledger note is attached.

## Review findings

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.

### Formula and scope findings

- 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.

### Unit assumptions

- 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.

## Boundary hardening

**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.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "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."
}
````

## Related workflows

[Mortgage Suiteoptimization](<https://guthlabs.ai/docs/instrument-workflows/mortgage-suite/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

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

- `BOUNDARY_HAZARD_CATALOG.json`
