That's not really confidence-inducing, so I abandoned this idea too.
Were you printing a space, or some other visible character, after the float, when printing it on the LCD, so you know that the value from dtostrf() was 5 characters, instead of 4? Or was the value not fully overwriting what was already displayed?