CREATE CURSOR Addup(Value B(2)) INSERT INTO addup VALUES (201.10) INSERT INTO addup VALUES (25.18) INSERT INTO addup VALUES (150.11) INSERT INTO addup VALUES (778.88) INSERT INTO addup VALUES (151.21) INSERT INTO addup VALUES (11.31) INSERT INTO addup VALUES (10.00) nNumbers = RECCOUNT() nDecimal = 2 ** Sort them in ascending order to ensure that any number is lager than the previous number. SELECT * FROM addup ORDER BY 1 INTO ARRAY aNumbers nResultNumber = 361.21 =CheckForSumIsResult(0,0,"") RETURN *- FUNCTION CheckForSumIsResult(nTotal, nIndex, cCalc) LOCAL nT FOR nT = nIndex+1 TO nNumbers DO CASE CASE nTotal+aNumbers(nT) < nResultNumber =CheckForSumIsResult(nTotal+aNumbers(nT), nT, cCalc+"+"+ALLTRIM(STR(aNumbers[NT],10,nDecimal))) CASE nTotal+aNumbers(nT) = nResultNumber ? SUBSTR(cCalc+"+"+ALLTRIM(STR(aNumbers[nT],10,nDecimal)),2) OTHERWISE ** The sum is larger than the resultnumber ** There is no need to search further as all remaining numbers are even larger ** So exit here EXIT ENDCASE ENDFOR RETURNHTH,