Function note

The discount-security functions run a fixed formula order on the x87 unit

FUNC.DISC · FUNC.INTRATE · FUNC.PRICEDISC · FUNC.RECEIVED · FUNC.TBILLYIELD

FN-DISC-001: The discount-security functions run a fixed formula order on the x87 unit

Detail for matching Excel's bits · measured · recorded 2026-11-04

With B the year basis and D the day count, Excel evaluates DISC = (1 - pr/red) * (B/D); INTRATE = ((red - inv)/inv) * (B/D); RECEIVED = inv / (1 - (disc*D)/B); PRICEDISC = red - ((disc*red)*D)/B; TBILLYIELD = ((100 - pr)/pr) * (360/D), each + - * / taken from the x87 unit at precision 64 and stored to binary64. Results can sit several units from the exact value: the DISC row below is 5 units below it.

Call and input routeInputsExcelCorrect valueRecorded in
DISC(37655, 38261, 94.87631295104353, 102.73579504052532, 3)
cell-value2
settlement: 37655
0x40e262e000000000
maturity: 38261
0x40e2aea000000000
pr: 94.87631295104353
0x4057b81582ea72c4
redemption: 102.73579504052532
0x4059af174414e760
basis: 3
0x4008000000000000
0.046077868684136686
0x3fa79784b622b014
0.04607786868413672
0x3fa79784b622b019
Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H
TBILLYIELD(47701, 47702, 2.279784366464575)
cell-value2
settlement: 47701
0x40e74aa000000000
maturity: 47702
0x40e74ac000000000
pr: 2.279784366464575
0x40023cff95ff2def
15430.96713248709
0x40ce237bcaff517a
15430.967132487087
0x40ce237bcaff5178
Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H
INTRATE(58548, 58599, 428532.13421818457, 6.805737049418593, 0)
cell-value2
settlement: 58548
0x40ec968000000000
maturity: 58599
0x40ec9ce000000000
investment: 428532.13421818457
0x411a27d089707de5
redemption: 6.805737049418593
0x401b39132211b6ad
basis: 0
0x0000000000000000
-7.199885653133469
0xc01cccaed31c9766
—Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H

Correct value: Exact rational value of the same formula from the binary64 inputs, correctly rounded.

Correct value: Exact rational value of the same formula from the binary64 inputs, correctly rounded.

Basis: 2,400 of 2,400 rows for each function with stored precision-64 arithmetic. Plain binary64 matches 2,398 to 2,399 of the same rows, so few rows separate the two; keeping intermediates in 80-bit registers without stores loses 475 to 1,335.

Evidence and capture sources

Machine-readable note records