CLEAR FOR iyear = 1999 to 2001 FOR iMonth = 1 TO 12 iDaysInMonth = fDaysInMonth2( iYear, iMonth ) ? DATE( iYear, iMonth, iDaysInMonth ), iDaysInMonth NEXT iMonth ? NEXT iYear RETURN .T. ************************************** FUNCTION fDaysInMonth( iYear, iMonth ) ************************************** IF iMonth < 12 dEndOfMOnth = DATE( iYear, iMonth+1, 1 ) -1 ELSE dEndOfMOnth = DATE( iYear+1, 1, 1 ) -1 ENDIF RETURN DAY( dEndOfMOnth ) ENDFUNC && fDaysInMonth( iYear, iMonth ) *- Or as a one-liner: *************************************** FUNCTION fDaysInMonth2( iYear, iMonth ) *************************************** RETURN DAY( IIF( iMonth < 12 ; , DATE( iYear, iMonth+1, 1 ) -1 ; , DATE( iYear+1, 1, 1 ) -1 )) ENDFUNC && fDaysInMonth( iYear, iMonth )