Time and TimeAlarms Libraries – Ask here for help or suggestions

Hi,
Thanks for the nice library! I made some changes to it (the callback parameter), so keep that in mind when reading this---I may have broken something there.

I'm having trouble with rewriting my alarms. I'm switching on 12 lamps with separate timers. Here's a snippet of my code (inside loop()):

} else if (command == MESSAGE_TIMER_ON) {
      int floors=message[0];
      int lamps=message[1];
      int h=message[2];
      int mi=message[3];
      int sec=message[4];
      char msg;
      if (tons[floors][lamps]==0) {
        theOnTimers[floors][lamps]=Alarm.alarmRepeat(h,mi,sec,&alarm_cb,&theOnAlarms[floors][lamps]);
        tons[floors][lamps]=1;
        msg=0x03;
        writeMessage(MESSAGE_OK,&msg,1);
      } else {
        Alarm.write(theOnTimers[floors][lamps],AlarmHMS(h,mi,sec));
        msg=0x04;
        writeMessage(MESSAGE_OK,&msg,1);
      }
    }

The first time my program reaches this point (for each lamp), everything works nicely: Alarm.alarmRepeat is used and timer works as intended (light switches on). The following times the correct code block gets called (determined from the response message 0x04), but the timer does not turn the light on.

Am I missing something obvious? Should I re-enable the alarm after Alarm.write? I'll go re-check my changes to the library if there's nothing obviously wrong in this block of my code.

Thanks for any comments,
Tevko

edit:
The id variable is set up as

AlarmID_t theOnTimers[3][4];

And is not tampered with anywhere else.