correzione codice per display lcd

il mio codice :

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
void setup() {
  Serial.begin(9600);
  lcd.begin(8, 2);
  lcd.clear();
  lcd.cursor();
  lcd.noCursor();
}
void loop() {
  lcd.setCursor(0,0);
  lcd.print(distanza);
  lcd.setCursor(0,1);
  lcd.print("cm");
}

ho una variabile distanza che voglio stampare sulla prima riga compreso tra 0 e 999
ci sarebbe una funzione che ho tolto che calcola la distanza con un sonar
c'è un piccolo errore.
quando la variabile è a tre cifre e successivamente passa a 2 o 1 cifre, restano stampati le cifre precedenti modificando solo le prime(1 o 2 cifre).
ho provato a mettere clear prima che stampasse la distanza ma ci mette troppo e alla fine non vedo nulla
ho risolto aggiungendo questo

  // -----------------------
  if (distanza<10){
    lcd.setCursor(0,0);
    lcd.print(0);
    lcd.setCursor(1,0);
    lcd.print(0);
    lcd.setCursor(2,0);
    lcd.print(distanza);
  } else if (distanza<100){
    lcd.setCursor(0,0);
    lcd.print(0);
    lcd.setCursor(1,0);
    lcd.print(distanza);
  } else if (distanza<1000){
    lcd.setCursor(0,0);
    lcd.print(distanza);
  }

ma non mi sembra una soluzione intelligente

basta che stampi uno spazion se il numero é mnore di 100 e 2 spazi se il numero da visualizzare é minore di 10.

if (distanza <100) lcd.print(" ");
if (distanza <10)lcd.print(" ");
lcd.print(distanza);

Ciao Uwe