I do this... simple and it works:
FUNCTION lastDay RETURNS DATE (INPUT dDate AS DATE):
IF dDate EQ ? THEN RETURN ?.
IF month(dDate) = 12 THEN RETURN DATE(12,31,YEAR(dDate)).
RETURN DATE(MONTH(dDate) + 1,1,YEAR(dDate)) - 1.
END FUNCTION.
MESSAGE lastDay(date(01,01,2008)).Paul