ну так сравните эти две строчки
n: INT:=0;
и
My_Data: ARRAY[1..45] OF My_Type;
в коде нет проверки, что переменная _day имеет значение в пределах диапазона массива. Не могу представить что день из RTC может иметь значение более 31,тем более больше 45, а вот ноль вполне может быть если что то пошло не так при определении даты