kurdem no najlepszym sposobem na znalezienie błędu jest wciskanie wszędzie gdzie się da show_message.
daj przed pętlą:
GML
show_message( '#Start: ' + string( compare_time(h,m,get_day_start(day))) + 'End: ' + string( compare_time(h,m,get_day_end(day)))) i powiedz co zwraca.
E: W ogóle moim zdaniem to za bardzo sobie to wszystko komplikujesz. Można by to ogarnąć na jednej pętli podpinając pod to rozpiskę godzin i lekcji w formie tablic.