Код:
    if ts - tsOLD >= 1000 then          // ПР может проскочить 1000 мс период
Чет не пойму, это условие же никогда не выполнится. Значение tsOLD присваивается в теле IF и до этого равно нулю...