Pequeño problema código temporizador []

Vuelvo a tener problemas. Unas veces funciona y otras no. Cuando no funciona llega al final de la cuenta atrás, y en vez de apagar el led, empieza otra vez la cuenta desde números muy altos.
Gracias.

Vale me contesto yo. El problema es el siguiente. El cristal de nuestro micro no es exacto, entonces, si cojo un minuto me arriesgo a que varíe entre 1001 ms, 999 ms y 1000. Si sale 998 nunca va a ser !=0 porque los cálculos no dan...

 while(pasado!=0)
         {
            digitalWrite(red, HIGH);
            pasado=pasado-1000;
            delay(500);

De todas formas me gustaría saber si es así como decías @OoTzToO. Un saludo y 1000 gracias!

Captura de pantalla 2012-12-04 a la(s) 20.09.37.png