function pn_day_nr { typeset ymd=$1 pn=${2:-0} function pn_day1 { typeset ymd=$1 pn=$2 d ym x (( d = ymd % 100 )) (( ym = ymd / 100 )) if (( pn == -1 )); then if (( d > 1 )); then (( x = ymd - 1 )) (( x > 17520902 && x < 17520914 )) && (( x = 17520902 )) else x=$(end_month $(pn_month $ym -1)) fi elif (( pn == +1 )); then if (( d < 28 )) || (( ymd < $(end_month $ym) )); then (( x = ymd + 1 )) (( x > 17520902 && x < 17520914 )) && (( x = 17520914 )) else x=$(( 100*$(pn_month $ym +1) + 1 )) fi fi printf "%s\n" $x return 0 } while (( pn != 0 )); do if (( pn < 0 )) then ymd=$(pn_day1 $ymd -1); (( pn = pn + 1 )) else ymd=$(pn_day1 $ymd +1); (( pn = pn - 1 )) fi done printf "%s\n" $ymd return 0 }