YRDIF seems to be returning inexact results for me.
If I run the following in a data step:
test1 = yrdif('07JAN2000'd,'07JAN2001'd,"ACT/ACT");
test2 = yrdif('06JAN2000'd,'07JAN2001'd,"ACT/ACT");
test3 = yrdif('08JAN2000'd,'07JAN2001'd,"ACT/ACT");
test4 = 365/365;
and then do a Proc Freq on the results, I get:
Test2 and Test3 are very close to what I'd expect (within floating point constraints) but I'd expect Test1 to be exactly 1. So what am I doing wrong?
When the period includes a leap day, YRDIF adds the leap day and then averages it across four years (third arg is 'actual' or 'act/act'). If you are estimating a span of years then the value is off by a fraction of a day. This seems to be incrementally better than the (stop-start)/365.25 formula. Incrementally because either way the differences tend to be in the third decimal place.