Пытаюсь реализовать секундомер с выводом времени с точностью до 1\100 секунды. При использовании функции setInterval возникают заметные неточности во времени (примерно каждые 30 секунд секундомер отстает на 1 секунду). Если точность уменьшить до 1\10 секунды, то отставание незаметно (по логике должен отставать на секунду каждые 5 минут). 
...
hoursVal = minutesVal = secondsVal = msecondsVal = 0;
			
			var interval = setInterval(function(){
				if (msecondsVal < 99) {
					mseconds.innerText = ++msecondsVal;
				} else {
					mseconds.innerText = msecondsVal = 0;
					if (secondsVal < 59) {
						seconds.innerText = ++secondsVal;
					} else {
						seconds.innerText = secondsVal = 0;
						if (minutesVal < 59) {
							minutes.innerText = ++minutesVal;
						} else {
							minutes.innerText = minutesVal = 0;
						}
					}
				}
			},10);
Вот код. Есть мысль, что задержка происходит из-за использования свойства innerText. Пробовал использовать два интервала (один для расчета, другой для вывода), но зря.
Как обойти данную проблему?
P.S. Пробовал использовать setTimeout, погрешность осталась.