je n'ai pas pris le temps de détailler ton code, mais cette ligne ...
time = (seconde + (60 * minute) + (3600 * heure)); // on met à jour le temps programé
tu mets le temps en secondes, et pour 9 h tu as 36009=32400
et si tu rajoute 10mn tu as 32400+6010=33000
avec time qui est un tu peux y mettre + ou - 32767
time = (seconde + (60 * minute) + (3600 * heure)); // on met à jour le temps programé
passe time en "long" au lieu de int