Круто.
А
1.7|0
даёт единицу, т.е. e|0 не аналог Math.round(e)
И зачем speed в таймере делить на 100 каждый раз, когда можно заранее вычислить? Про приведение к строке distance каждый раз я вообще молчу.
А что это за конструкция (function () {... ? Много раз видел, никак не могу понять, после скобочки вот эта штучка function должна приводить к TypeError, не?