Становится ли переменная равной нулю не понятно
А что тогда Вы наблюдаете в симуляторе? Откройте в окне Watch переменные и смотрите за их величиной.
И с какого перепуга Вы решили, что симулятор может симулировать время?
Что касается железа, то кроме программы в нем есть еще причины почему код может не исполнятся. Например неверный или отсутствующий конфиг или висящий в воздухе MCLR... Да мало ли что еще...
Вам показали, что код исполняется, поставив брекпойнт на return. Программа успешно вышла на точку останова.