Сделайте targetPosition и приближайтесь к ней постепенно. Например, по 5% разницы текущего положения и targetPosition за шаг, пока расстояние не станет меньше какого-то минимального заданного или по количеству шагов - тогда можно установить конечную позицию и остановить таймер.