Contador regressivo com millis()

E ae galera, estou com um problema aqui.
Estou tentando fazer um contador regressivo, porém, meu código não está funcionando como eu esperava. Ele deveria repetir a iteração à cada 1 seg. Porém, o laço está funcionando à cada 1 ms e eu não faço ideia do porque :expressionless:

int min = 0;
int sec = 300;

int starttime = 0;

void setup(){  
  Serial.begin(9600); 
}
//----------------------------------------------------
void loop(){
  starttime = sec;
  if(sec > 60)
  {
    min = floor(sec/60);
    if(sec%60 != 0){
      sec = sec- min;
    }
    else
    {
      sec = 59; 
    }
  }
  while(min >= 0){
    while(millis()/1000 < starttime)
    {
      sec--;
      Serial.println(min*100+sec);
    }
    min--;
    sec = 59;
  }
}

Vale lembrar que eu não posso usar delay() porque vou fazer a impressão do número resultante num 4x 7 segment BCD display.

Alguém pode me ajudar ?

Crossposting?
http://forum.arduino.cc/index.php?topic=262478.msg185163

I thought that i could put in both languages, i don't know how to remove de topic. Sry.