DECLARE FUNCTION SumDigits% (Num AS INTEGER, NBase AS INTEGER) CLS PRINT "1 base 10 ->"; SumDigits%(1, 10) PRINT "1234 base 10 ->"; SumDigits%(1234, 10) PRINT "FE base 16 ->"; SumDigits%(&HFE, 16); " (Hex -> "; HEX$(SumDigits%(&HFE, 16)); ")" PRINT "F0E base 16 ->"; SumDigits%(&HF0E, 16); " (Hex -> "; HEX$(SumDigits%(&HF0E, 16)); ")" FUNCTION SumDigits% (Num AS INTEGER, NBase AS INTEGER) ' Var DIM iSum AS INTEGER Num = ABS(Num) ' Should be a positive number IF NBase < 2 THEN NBase = 10 ' Default decimal DO WHILE Num > 0 iSum = iSum + (Num MOD NBase) Num = Num \ NBase LOOP SumDigits% = iSum END FUNCTION