¿Cómo crear un temporizador preciso en javascript?

Necesito crear un temporizador simple pero preciso.

Este es mi código:

var seconds = 0;
setInterval(function() {
timer.innerHTML = seconds++;
}, 1000);

Después de exactamente 3600 segundos, imprime aproximadamente 3500 segundos.

¿Por qué no es exacto?

¿Cómo puedo crear un temporizador preciso?