実際のところ
$ LANG=C gdate -d "+2 month -$(($(gdate +%d))) days" +%m%d 0531
$ LANG=C gdate -d "-$(($(gdate +%d))) days" +%m%d 0331
あるいは、1日前を示すlast day(または yesterday)という構文をつかう手も。
ただし、EMONTHとは違うため「2ヶ月後初日の1日前」という少々回りくどい事をする必要があります。
$ LANG=C gdate --date "`gdate --date "2 month" +%Y%m01` last day" +%m%d 0531