Verificar si el ICCID de un SIM card es correcto

Dentro de mis labores diarias me topé con una incognita, ¿Cómo demonios puedo verificar si el ICCID de una SIM card, esta bien escrito? … bueno la respuesta es muy simple. Después de un rato de investigación me di cuenta que el algoritmo que utiliza el ICCID para calcular el digito de verificación o mejor conocido por su nombre en ingles: checksum digit; se llama algoritmo de Luhn, el cual les voy a explicar en simple y vulgar español.
Tomaremos como ejemplo el siguiente ICCID: 8950301211030316837 (el ultimo digito es el checksum digit); lo primero que tenemos que hacer es multiplicar por 2 un digito sí y un digito no, sin tomar en cuenta el 7 (de derecha a izquierda).
3 8 6 1 3 0 3 0 1 1 2 1 0 3 0 5 9 8
6 8 12 1 6 0 6 0 2 1 4 1 0 3 0 5 18 8
Luego sumamos los digitos de las cifras de dos digitos (si al multiplicar 6 x 2 nos da 12; entonces sumamos 1 + 2) y nos queda:
3 8 6 1 3 0 3 0 1 1 2 1 0 3 0 5 9 8
6 8 3 1 6 0 6 0 2 1 4 1 0 3 0 5 9 8 = 63
Luego solo sumamos todos los dígitos de la siguiente manera:
63 + el digto de verificacion = 63 + 7 = 70
Al final hacemos una división entera para obtener el resto (Mod):
70 mod 10 = 0
Y si el resultado es 0, entonces el el ICCID es correcto. Acá les dejo el código que utilicé en Visual Basic 2010:
Function verifyICCID(ByVal ICCID As String, ByVal checksumDigit As Byte) As Boolean
Dim ICCIDArray(ICCID.Length - 1) As Integer
Dim sumatoria As Integer = 0
For i As Integer = 0 To ICCID.Length - 1
ICCIDArray(i) = ICCID.Substring(ICCID.Length - (i + 1), 1)
Next
For i As Integer = 0 To ICCIDArray.GetUpperBound(0) Step 2
ICCIDArray(i) = ICCIDArray(i) * 2
Next
For Each numero As Integer In ICCIDArray
If numero < 10 Then
sumatoria += numero
ElseIf numero >= 10 Then
Dim n As String = numero.ToString()
sumatoria += Convert.ToInt16(n.Substring(0, 1)) + Convert.ToInt16(n.Substring(1, 1))
End If
Next
Return IIf((sumatoria + checksumDigit) Mod 10 = 0, True, False)
End Function
Fuente: Wikipedia