public static void Main()
string cusip = "373384VP";
string checkDigit = GenerateCheckDigit(cusip);
Console.WriteLine("Cusip: {0}", cusip);
Console.WriteLine("Check: {0}", checkDigit);
Console.WriteLine("Final: {0}{1}", cusip, checkDigit);
public static string GenerateCheckDigit(string cusip)
char[] digits = cusip.ToUpper().ToCharArray();
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ*@#";
for (int i = 0; i < digits.Length; i++)
if (!int.TryParse(digits[i].ToString(), out val))
val = alphabet.IndexOf(digits[i]) + 10;
val = (val % 10) + (val / 10);
int check = (10 - (sum % 10)) % 10;