ИНН

Неожиданно обнаружил, что ИНН распадается на несколько цифр. Существуют 10- и 12-ти значные ИНН в форме NNNNXXXXXC и NNNNXXXXXXCC. Где
NNNN — номер налоговой инспекции.
XXXXX или XXXXXX — номер налогоплательщика.
C или CC — контрольные числа. Я нашёл алгоритм расчёта контрольных чисел и переписал его на PHP. Если кому-нибудь надо (например, для проверки на валидность введённого значения), могу поделиться:

function CheckINN ($inn)
{
$factor = array (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8); if (strlen($inn) == 10)
{
for ($i = $sum = 0; $i<9; $i++)
$sum += $inn{$i}*$factor[$i+2]; return ($sum%11)%10;
}

if (strlen($inn) == 12)
{
for ($i = $sum = 0; $i<10; $i++)
$sum += $inn{$i}*$factor[$i+1]; for ($i = $sum2 = 0; $i<11; $i++)
$sum2 += $inn{$i}*$factor[$i]; return (($sum%11)%10) . (($sum2%11)%10);
} return FALSE;
}