FN-CUMPRINC-001: CUMPRINC follows PPMT on one loan and not in general; its own route is open
Detail for matching Excel's bits · measured · recorded 2026-11-04
On the 30-year loan, CUMPRINC(0.05/12,360,200000,1,12,0) equals the left-to-right binary64 sum of Excel's own twelve PPMT answers, to the last bit, and CUMIPMT over the same periods equals 12*PMT - CUMPRINC, computed from Excel's own answers, to the last bit. That does not generalise: over recorded type 0 calls for a single period, CUMPRINC equals PPMT on 56 of 135 rows and differs on 79, with PPMT computed by the route in FN-IPMT-001.
| Call and input route | Inputs | Excel | Correct value | Recorded in |
|---|---|---|---|---|
=CUMPRINC(0.05/12,360,200000,1,12,0)formula-literal | As typed | -2950.73069113495970xc0a70d761d260042 | — | Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA |
=CUMIPMT(0.05/12,360,200000,1,12,0)formula-literal | As typed | -9932.9882611563770xc0c3667e7f577146 | — | Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA |
=PMT(0.05/12,360,200000)formula-literal | As typed | -1073.64324602427810xc090c692af15f63a | — | Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA |
Basis: One loan block of the catalogue capture, recomputed from the recorded answers by binary64 arithmetic, and 135 recorded single-period CUMPRINC rows compared with PPMT's route.
Inferred: That the 79 single-period differences are CUMPRINC's own and not PPMT's rests on the PPMT route, which matches every fv 0, type 0 row tested. That CUMIPMT remains count*PMT less CUMPRINC beyond this block is inferred.
Open: CUMPRINC's per-period route. Recurrences, closed balances, count*PMT less interest and binary64 variants all stay below PPMT's 56 of 135. Recorded rows now match CUMPRINC 185 of 586 and CUMIPMT 12 of 38.
Evidence and capture sources
- ExcelFunctionsHandbook · content/notes/evidence/2026-11-04/annuity-EVIDENCE.txt b5d84a80a5a4640eca9ce04f232c0bc115503f34 · section UPDATE, open item 3 research write-up
- DnaCalc · crates/calc-func/src/ported/cumulative_finance_family.rs 6c6cbd31c960fe1ac07d5cce9cb33ca9d7d86cf5 · the commit message states the 79 of 135 and the loss class
- DnaCalc · crates/calc-func/tests/captures/catalogue/sections/dcj9k_annuity.capture.json c9f9d354165d2c20b9455c32582ea50baac7ba73 · sheet dcj9k_annuity, row 751, column 4
- DnaCalc · crates/calc-func/tests/captures/catalogue/sections/dcj9k_annuity.capture.json c9f9d354165d2c20b9455c32582ea50baac7ba73 · sheet dcj9k_annuity, row 752, column 4
- DnaCalc · crates/calc-func/tests/captures/catalogue/sections/dcj9k_annuity.capture.json c9f9d354165d2c20b9455c32582ea50baac7ba73 · sheet dcj9k_annuity, row 726, column 4