Каждый раз, когда вызывается эта функция, она будет перескакивать количество пикселей в window.scrollBy (0,5), независимо от того, где находится pageYOffset.Например, если pageYOffset равен 300px, он перейдет к 305px.
, но эту проблему можно решить, переместив if и добавив else
следующим образом:
var timerID = setInterval(function() {
if( window.pageYOffset <= 500 )
window.scrollBy(0, 5);
else
clearInterval(timerID);
}, 1);