я думаю нужен флаг, допустим direct и допустим изначально у него значение asc.
в функции обработчике идет проверка на direction, если он в значении asc идет увелечение count на 1, если нет - уменьшение
внутри каждой ветки идет проверка с count. в ветке asc, если count >= 100 && setDirection(desc), в ветке desc - count <= 100 && setDirection(asc)