LastDayOfMonth = GOMONTH(DATE(),1)-DAY(GOMONTH(DATE(),1))But, as I think you realised, this type of solution will not work unless the code is run *every* day. Your best bet is probably to follow Hilmar's suggestion and use a table with end of month dates and a flag indicating whether that particular monthly report has been printed.
>If month(date()+ 1) # month(date()) >print from 1st report >else >report from 2nd report