там все работает. Тот трюк, который сделали с минутами, можно было бы с секундами сделать и не наворачивать лишний код.
Т.е. заменить
dif = dif-1;
if(dif<0){
td.setMinutes(td.getMinutes()-1);
dif=59;
};
td.setSeconds(dif)
на
td.setSeconds(td.getSeconds()-1)
а изначальные секунды устанавливать вне функции таймера.