Since duration gives you a duration of time, and there is no fixed times above "week" it makes sence that it stops at this.
if you went $duration(31536000) *365x24x60x60 and it came back with 1yr, that may or maynot be correct based apon what start date you apply it to

If its applied to 22 feb you would think one year later is 22 feb but you might find that thats actually needs to be 31622400 366x24x60x60, becuase that year was a leap year.
While if $duration replied with what it does 52wks 1day, while its not particually help full to you, if you did a pply that to the 22 feb date you end up on 21st feb (assuming as above its a leap year)

All im really trying to say i guess is unless you give it a starting date, theres no way to acuaratly reply with a number of months and years in duration, is 28days a month or 29 or 30 or 31? Dont know unless you tell me where im starting from. 22feb/2003 its 28, 2004 it was 29, any april its 30 and march its 31.

You could have an extra field to duration i guess with a start date to offset from?!?!?!