Son cosas diferentes. Un tema es que te de valores negativos y otro son las oscilaciones o ruido presente en tu lectura del sensor LM35.
Una solución al segundo problema es un promedio de N valores.
Lees N valores usando analogRead() sin convertir en una variable unsigned long en la que los vas sumando.
Y al final usas esa variable y le aplicas lo mismo que estas haciendo además de dividirla por N.
La respuesta será un valor mas estable.