Esta puede ser la peor idea que existe, pero tal vez pueda simplemente calcular el tiempo entre ahora y la fecha de finalización una vez, encontrar la cantidad de intervalos que desea y luego llamar a setInterval
y disminuir manualmente el valor.
Alias:
var initialTime = new Date();
var endTime = /* Your Time when the thing is over */
var intervalId = setInterval(function()
{
// Every second, decrement the counter by 1 second.
// if counter is done, show end and then
clearInterval(intervalId);
}, 1000);