L’ultima lettera del codice fiscale è un checksum: tabelle dei valori pari e dispari, somma, modulo 26 ed esempio di calcolo completo.
La sedicesima e ultima lettera del codice fiscale non contiene informazioni anagrafiche: è un carattere di controllo (checksum) calcolato sugli altri 15. Serve a intercettare errori di battitura o trascrizione: cambia un solo carattere e, quasi sempre, il controllo non torna più. È lo stesso meccanismo usato dallo strumento di verifica.
Per le posizioni pari la regola è semplice: le cifre valgono se stesse (0→0 … 9→9) e le lettere valgono la loro posizione nell’alfabeto partendo da zero (A→0, B→1, … Z→25). Per le posizioni dispari i valori seguono invece una tabella “irregolare” fissata dal decreto: A e 0 valgono 1, B e 1 valgono 0, C e 2 valgono 5, e così via. La tabella completa dei valori dispari è riportata nella pagina di verifica.
Prendiamo i 15 caratteri RSSMRA80A01H501. Le posizioni dispari sono R, S, R, 8, A, 1, 5, 1; quelle pari S, M, A, 0, 0, H, 0. Applicando le due tabelle, la somma dei valori dà un totale il cui resto diviso 26 è 20: la ventunesima lettera dell’alfabeto (contando A come 0) è la U. Il codice completo è quindi RSSMRA80A01H501U.
Un checksum corretto dice solo che il codice è formalmente coerente: non garantisce che appartenga a una persona reale, né che sia il codice ufficialmente attribuito (potrebbe esistere una variante per omocodia). Inoltre alcuni errori doppi possono, per pura coincidenza, produrre ancora un checksum valido. Per l’esistenza reale del codice fa fede solo l’Agenzia delle Entrate.
La tabella è stata definita nel D.M. del 1976 proprio per rendere il controllo più sensibile agli errori tipici di trascrizione: valori “mescolati” intercettano più scambi e sostituzioni rispetto a una numerazione lineare.
Sì: dopo la sostituzione delle cifre con le lettere omocodiche, il carattere di controllo viene ricalcolato sui nuovi 15 caratteri.
Certo: le lettere finali possibili sono solo 26, quindi codici diversi condividono spesso lo stesso checksum. Il controllo serve a validare un singolo codice, non a distinguerli.