PROCEDURE SomeProc LOCAL SomeVariables, lRet, nX DO CASE CASE !THIS.GetValidDateRanges() CASE THIS.ExecSomeOtherCode() AND TYPE('.arrItems[1,1]')#'N' OTHERWISE nX = 1 lRet = .T. DO WHILE nX >= ALEN(THIS.arrItems,1) AND lRet lRet = (THIS.arrItems[ix,2] # 'somecondition' OR THIS.SomeOtherProc(nX)) AND ; (THIS.arrItems[ix,3] # 'somecondition2' OR THIS.SomeOtherProc2(nX)) nX = nX + 1 ENDDO ENDCASE RETURN lRetCompact, and in some respect somewhat dirty. However I find this very clear to read.