D1 := (EncodeDate(1956, 12, 1));
D2 := (EncodeDate(2015, 12, 1)) + EncodeTime(1,0,0,0);
writeln('FPC: ',YearsBetween(D1, D2));
writeln('WP : ',WP_YearsBetween(D1,D2));
writeln('WP2: ',WP2_YearsBetween(D1,D2));
writeln('BB : ',BB_YearsBetween(D1, D2));
writeln('BY : ',BY_YearsBetween(D1, D2));
Gives:
FPC: 58
WP : 60
WP2: 59
BB : 59
BY : 59
Where WP2 is the code using PeriodBetween.
So WP's original code is off by one in the opposite direction from FPC in this case.
Bart