Schaltuhr fehlerhafte Berechnung der Schaltzeit beim Übergang Mitternacht

Ich habe mir dazu diese Funktion erstellt.
Die Arbeitet mit der Time.h zusammen.

Siehe:
http://www.pjrc.com/teensy/td_libs_TimeAlarms.html

Und mein Beispiel...
Gerade geschrieben, scheint aber zu funktionieren...

#include <Time.h>

unsigned int starthour=7;
unsigned int startminute=15;
unsigned int endhour=23;
unsigned int endminute=10;


void setup()
{
  Serial.begin(9600);
  setTime(23,9,30,1,1,11); // set time

}

void  loop(){  
  digitalClockDisplay();
  
  Serial.println(inTIME(&starthour,&startminute,&endhour,&endminute));
  
  delay(1000); // wait one second between clock display
}

void digitalClockDisplay()
{
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.println(); 
}

void printDigits(int digits)
{
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}


// inTIME

boolean inTIME(unsigned int *starthour, unsigned int *startminute, unsigned int *endhour, unsigned int *endminute){
  unsigned long nowtimesecond = (unsigned long)hour() * 3600 +  (unsigned long)minute() * 60 + (unsigned long)second();
  unsigned long starttimesecond = (unsigned long)*starthour * 3600 + (unsigned long)*startminute * 60;
  unsigned long endtimesecond = (unsigned long)*endhour * 3600 + (unsigned long)*endminute * 60;

  if(starttimesecond < endtimesecond){  // bsp. 6-13 Uhr
    if(starttimesecond < nowtimesecond && nowtimesecond < endtimesecond) return true; // startzeit < aktuelle zeit < endzeit
  }
  else if(starttimesecond > endtimesecond){ // bsp. 22-6 Uhr
    if(starttimesecond < nowtimesecond) return true; // bsp. startzeit 22 Uhr und aktuell ist 23 Uhr
    else if(nowtimesecond < endtimesecond) return true; // bsp. startzeit 22 Uhr und aktuell ist 2 Uhr
  }
// alles andere ist false  
return false;
}

// ENDE inTIME