Scheint, als ob irgendwas anderes passt nicht. Für eine bessere Aussage bräuchte ich mehr Code. Da du nur die Stunde und Minute vergleichst, müsste die ganze Minute über jede Sekunde Alarmdauer auf 3 gesetzt werden.

Die Sekunde zwischenspeichern geht ganz einfach:

Code:
dim sekalt as byte
...
...
do
if sekalt<>_sec then
   sekalt=_sec
   gosub sekuendlich
end if

loop
end

sekuendlich:
   'hier der Code rein, welcher nach jeder neuen Sekunde ausgeführt werden soll. z.B.
   gosub Uhranzeigen
   gosub Alarme
   gosub Menuetimer
   gosub beleuchtungstimer
   ...
   ...
   ...
return