Serial.read crazy results

You're missing the difference between the ASCII representation of a digit, and the digit itself.
Comes up about once a month here.