Luhn Credit card checksum function
luhn: func [ ; tested out OK. card-num [string!] /local cksum flag val ] [ cksum: 0 flag: even? length? card-num foreach digit card-num [ val: to integer! form digit if flag [ val: val * 2 if val > 9 [val: val - 9] ; - alt - ;val: pick [0 2 4 6 8 1 3 5 7 9] val + 1 ] cksum: cksum + val flag: not flag ] print cksum 0 = remainder cksum 10 ] ;print luhn "4005550000000019"