LPARAMETERS pvParm1 , piYear , piFDOW LOCAL liWeeksPerMonth AS INTEGER LOCAL liFDOW AS INTEGER LOCAL liMonth AS INTEGER LOCAL liYear AS INTEGER LOCAL liPcount AS INTEGER liPcount = PCOUNT() DO CASE CASE INLIST(VARTYPE(pvParm1),[D],[T]) liMonth = MONTH(pvParm1) liYear = YEAR(pvParm1) CASE liPcount >= 2 AND VARTYPE(pvParm1) = [N] AND VARTYPE(piYear) = [N] AND BETWEEN(pvParm1,1,12) AND BETWEEN(piYear,1,9999) liMonth = pvParm1 liYear = piYear OTHERWISE ERROR 11 RETURN ENDCASE IF liPcount = 3 AND VARTYPE(piFDOW) = [N] IF BETWEEN(piFDOW,1,7) liFDOW = piFDOW ELSE ERROR 11 RETURN ENDIF ELSE liFDOW = SET("FDOW") ENDIF ldFirstOfMonth = DATE(liYear, liMonth, 1) liWeeksPerMonth = MOD(WEEK(GOMONTH(ldFirstOfMonth,1),0,liFDOW)+52 - WEEK(ldFirstOfMonth,0,liFDOW), 52) RETURN liWeeksPerMonthLet me know if I created any errors.