TimeAlarm - timers over 24 hours?

  prg;

What's this? It's not calling a function.

  Alarm.delay(0); // wait one second between clock display

The code does not match the comment. Delay calls with a value of 0 can cause problems.

    restart;

Not calling a function, either.

    prgStep = prgStep + 1;

Ah, yes, the infamous C=C+1 style of coding. Perhaps you've noticed that the Arduino is programed with C++, not C=C+1.

I think that adding an RTC, and triggering actions on your own is going to be a much better idea.

Alternatively, you could trigger the alarm every hour, and in the callback decide if it is actually time to do something.