A more precise setInterval