Aggiornamento incoerente della varibile scritta nell'LCD

Devo ammettere che non comprendo il problema.
Sembra che fino a che stampi numeri a una cifra va bene, fino a che stampi numeri a due cifre va bene, se passi da una cifra a due cifre va bene, mentre se passi da due cifre a una cifra ottieni stampato un numero che ha per decine le decine del precedente numero a due cifre, mentre per unità la cifra nuova. Non dovrebbe essere il contrario? Nel senso, non dovrei avere le unità della vecchia cifra, ma alle decine la nuova?
Perché se io ho due spazi, e mi posiziono sul primo, e ci scrivo (esempio) 9 ottengo
'9' ' '
perché il programma non sa che lo voglio a due cifre, quindi lo scrive dalla prima.
Se ora mi riposiziono sulla prima scrivendo 12 ottengo
'1' '2'
perché il programma scrive le cifre in ordine a partire dalla posizione più alta (decine) che va nella posizione in cui si trova (la prima).
Il punto è che se ora mi rimetto sulla prima e scrivo 5, per quella logica dovrei avere
'5' '2'
perché il programma scrive il 5 sulla prima. Poi il numero è finito, quindi non cancella il 2 precedente, derivante dal 12. Numero che rimarrà fino a che non scrivo di nuovo un numero a due cifre.
Me lo spiegate?