numdate() #@ Convert day number to calendar date
{ #@ USAGE: numdate DAYNUM [VAR]
local _day _mnth _yr _cent base=-306 _j2gstart=639786
local _dnum=$1 _var=$2 _d400y=146097 numdate
case $_dnum in ""|*[!0-9]*) return 1 ;; esac
(( _dnum >= _j2gstart )) && _dnum=$((_dnum + 11))
_day=$(( _dnum - base ))
_cent=$(( (4 * _day - 1) / _d400y))
_day=$(( _day + _cent - _cent/4))
_yr=$(( (4 * _day - 1) / 1461))
_day=$(( _day - (1461 * _yr) / 4))
_mnth=$(( (10 * _day - 5) / 306))
_day=$(( _day - (306 * _mnth + 5) / 10))
_mnth=$(( _mnth + 2))
_yr=$(( _yr + _mnth/12))
_mnth=$(( _mnth % 12 + 1))
printf -v numdate '%d-%02d-%02d' "$_yr" "$_mnth" "$_day"
is_var "$_var" && printf -v "$_var" %s "$numdate" || printf '%s\n' "$numdate"
}