At one point, there wasn't the 2nd option to $duration. Then it was added. Or at least I think so. It's not too hard for him to do. And it does take a bit of scripting to actually do something like this. I currently use the below.

alias durr var %n | if ($1 < 0) { set %n - | tokenize 32 $right($1,-1) } | if ($1 < 604800) { return %n $+ $duration($1) | halt } | else { return %n $+ $iif(wk isin $gettok($duration($1),1,32), $calc(($remove($gettok($duration($1),1,32),w,k,s) * 7) + $iif(day isin $gettok($duration($1),2,32), $remove($gettok($duration($1),2,32),d,a,y,s), 0)) $+ days) $+ $remove($duration($1),$iif($wildtok($duration($1),*wk*,1,32), $wildtok($duration($1),*wk*,1,32),X),$iif($wildtok($duration($1),*day*,1,32), $wildtok($duration($1),*day*,1,32),X)) }