Problem with millis() timing

case 3:
    currentMillis = millis();
    diff = currentMillis - startMillis;
    if(buttonState == HIGH)
      {
      if(diff < debounce)
        {
        switch_1 = 0;
        }
      else if (diff<longPeriod)
        {
        switch_1 = 4;      
        }
      }
    if((diff >= longPeriod)
    {
      switch_1 = 6;
    }
    break;