in reply to Date::Calc in years?

There is no way to avoid thinking about special cases. Documentation for the module says that it does what is "intuitive". That may not meet your requirements in all cases. You still have to identify special cases, specify the result you expect, and verify that any proposed solution handles them correctly. Remember, if this issue were not important, you probably would not have asked the question in the first place.
Bill