Lo que yo encontré en este código es una diferencia de 30 días en el cálculo de la variable d (dia). Lo arreglé restando está diferencia.
NOTA: No sé como se comportará cuando entra en juego una diferencia de meses, ya que ahí entran en juego meses de 31 días. Pero en teoría no debería afectar.
A mi me sirvió con esto ya que la cuenta atrás que necesitaba estaba dentro del mismo mes.
Código:
//aumenta un cero si es menor que 10 (ejemp: 5 será 05)
var mascero:Function = function (n:Number):String{return n<10?'0'+n:n;}
//fecha limite (año, mes, dia, hora, minuto, segundo
var fecha_limite:Date = new Date(2006,4,30,23,59,59);
//
this.onEnterFrame = function(){
//la fecha_actual actual
var fecha_actual:Date = new Date();
//verificamos el tiempo faltante
var falta:Number = (fecha_limite.getTime() - fecha_actual.getTime())/10;
if(falta > 0){
//hacemos los cálculos
var d:Number = Math.floor(falta/8640000)-30; //ATENCIÓN AL CÁLCULO DE LOS DÍAS
var h:Number = Math.floor((falta%8640000)/360000); //horas
var m:Number = Math.floor((falta%360000)/6000); //minutos
var s:Number = Math.floor((falta%6000)/100); //segundos
var cs:Number = Math.floor((falta%100)); //centésimas de segundo
//lo mostramos en un campo de texto
falta_txt.text = mascero(d)+'d : '+mascero(h)+'h : '+mascero(m)+'m : '+mascero(s)+'s : '+mascero(cs)+'cs';
}else{
//si ya no falta nada
falta_txt.text = 'la fecha limite ya pasó';
delete this.onEnterFrame;
}
}
stop();