=LAMBDA(s, LET( ns, VLOOKUP( CHARS(s), CUSIPMAP, 2, FALSE ), AND( 9 = COLUMNS(ns), LET( firstEight, INITCOLS(ns), ixs, SEQUENCE(1, 8), evensDoubled, IF(ISEVEN(ixs), 2 * INDEX(firstEight, 1, ixs), INDEX(firstEight, 1, ixs) ), LASTCOL(ns) = MOD( 10 - MOD( SUM( QUOTIENT(evensDoubled, 10), MOD(evensDoubled, 10) ), 10 ), 10 ) ) ) ) ) CUSIPMAP ={"0",0;"1",1;"2",2;"3",3;"4",4;"5",5;"6",6;"7",7;"8",8;"9",9;"A", 10;"B",11;"C",12;"D",13;"E",14;"F",15;"G",16;"H",17;"I",18;"J",19;"K", 20;"L",21;"M",22;"N",23;"O",24;"P",25;"Q",26;"R",27;"S",28;"T",29;"U", 30;"V",31;"W",32;"X",33;"Y",34;"Z",35;"*",36;"@",37;"#",38}