Una manera de hacer esto consiste en guardar la posición anterior del 
scroll y la nueva por cada vez que se produzca el evento —que es más o menos lo que has venido haciendo—, luego, comparas a ambos valores y desplazas el 
scroll hacia arriba si la nueva posición es menor que la anterior, o hacia abajo si la nueva posición es mayor que la anterior. La cantidad a desplazarse será igual a la altura del contenedor o de los hijos de este por el valor de un contador que aumentará o disminuirá de a uno ya sea que se esté subiendo o bajando.    
   
Código Javascript
:
Ver originalvar padre = document.querySelector("#padre"),
    ant = 0, //Posición anterior del scroll
    pos = 0, //Nueva posición del scroll
    i = 0; //Contador
 
padre.addEventListener("scroll", function(){
    pos = this.scrollTop; //Tomo la nueva posición
    if (pos > ant){ //Si está bajando
        this.scrollTop = this.offsetHeight * ++i;
    }
    else if (pos < ant){ //Si está subiendo
        this.scrollTop = this.offsetHeight * --i;
    }
    ant = this.scrollTop; //Actualizo la vieja posición
}, false);
  
  DEMO 
Un saludo