Поставьте принт значения scrollTop в консоль. Когда вы двигаете элементы через "top" скролл как бы остается на одном месте. Как вариант - не привязываться к значению скролла и делать так: при событии скролла, если скролл был вниз - показываем следующий фрейм. Если вверх - предыдущий. Текущий фрейм и их количество храним в некоторой функции.
Ну сам алгоритм прост. Заводим счетчик, выбираем все интересующие ячейки. Дальше проходим по всем ячейкам и прибавляем их значение к этому счетчику. В какой момент возникает ступор?