Тут просто я вначале не совсем понял твой код. Как бывает, чужой код программисту труднее разобрать, чем написать новый.
Не будем отходить от темы. Еще заметил, в одной локации при сбросе перемещение в начало, а в остальных такого не было.