Das ist bei den LCD's oft so.
Ich schreib die aktuellen Zeichen in einen String mit der Länge einer Zeile.
Nicht beutzte Zeichen werden mit leezeichen aufgefüllt.
Dann erst wird dieser zum Display übertragen.
Das bewirkt, falls Zeichen hinter der aktuellen Anzeige stehen bleiben, werden diese durch ein Leerzeichen überschrieben.
Noch was, die String Variable mus 1Byte länger sein, als eigentlich für die Zeichen benötigt werden, weil "C" noch ein String - Endezeichen einfügt.