d1 данные берет от максимума по условию a1==true && max[i]>d1. Следовательно, обнуляться он никак не мог, ни в прошлых программах ни в настоящей.
Ответ наверное в ЕстьОткрытая - Not.
И в ОЗ который идет на закрытие - наверное следует поставить Не очищать.