Function note

On basis 1 the fictitious 1900-02-29 is not a leap day, and YEARFRAC takes serial 0 as a date

FUNC.ACCRINTM · FUNC.DISC · FUNC.INTRATE · FUNC.PRICEDISC · FUNC.RECEIVED · FUNC.YEARFRAC

FN-YEARFRAC-001: On basis 1 the fictitious 1900-02-29 is not a leap day, and YEARFRAC takes serial 0 as a date

Quirk · measured · recorded 2026-11-04

Excel's calendar holds a 29 February 1900, serial 60, that never existed. On basis 1 (actual/actual) it does not make 1900 a leap year: YEARFRAC(59,60,1) is 1/365, where the real 1904-02-29 gives YEARFRAC(1520,1521,1) = 1/366. Serial 0 is accepted as a date: YEARFRAC(0,5,0) is 5/360 and YEARFRAC(0,60,1) is 60/365. Reversed dates give the same answer as in order. ACCRINTM, DISC, INTRATE, PRICEDISC and RECEIVED take the same 365 and 366 on those dates: DISC(59,60,99,100,1) is about 3.65 and DISC(1520,1521,99,100,1) about 3.66.

Call and input routeInputsExcelCorrect valueRecorded in
YEARFRAC(59, 60, 1)
cell-value2
start_date: 59
0x404d800000000000
end_date: 60
0x404e000000000000
basis: 1
0x3ff0000000000000
0.0027397260273972603
0x3f66719f3601671a
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file
YEARFRAC(1520, 1521, 1)
cell-value2
start_date: 1520
0x4097c00000000000
end_date: 1521
0x4097c40000000000
basis: 1
0x3ff0000000000000
0.00273224043715847
0x3f6661ec6a5122f9
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file
YEARFRAC(0, 5, 0)
cell-value2
start_date: 0
0x0000000000000000
end_date: 5
0x4014000000000000
basis: 0
0x0000000000000000
0.013888888888888888
0x3f8c71c71c71c71c
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file
YEARFRAC(0, 60, 1)
cell-value2
start_date: 0
0x0000000000000000
end_date: 60
0x404e000000000000
basis: 1
0x3ff0000000000000
0.1643835616438356
0x3fc50a8542a150a8
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file
DISC(59, 60, 99, 100, 1)
cell-value2
settlement: 59
0x404d800000000000
maturity: 60
0x404e000000000000
pr: 99
0x4058c00000000000
redemption: 100
0x4059000000000000
basis: 1
0x3ff0000000000000
3.650000000000003
0x400d33333333333a
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file
DISC(1520, 1521, 99, 100, 1)
cell-value2
settlement: 1520
0x4097c00000000000
maturity: 1521
0x4097c40000000000
pr: 99
0x4058c00000000000
redemption: 100
0x4059000000000000
basis: 1
0x3ff0000000000000
3.6600000000000033
0x400d47ae147ae14f
—Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file

Basis: 19 YEARFRAC readings around serial 60 and the 1904, 2000 and 2004 leap days, 35 readings with serial 0 on all five bases, and 3 readings each from five financial functions.

Open: An argument left empty in the call, as in YEARFRAC(,5), has not been read.

Evidence and capture sources

Machine-readable note records