Javascript: ¿desplazarse de un div a otro al desplazarse?

Quiero poder, al desplazarme hacia abajo, ir directamente al siguiente div, y al desplazarme hacia arriba, ir directamente al div anterior. Aquí están mis archivos con un ejemplo con dos divs:

$(document).ready(function() {
  var lastScrollTop = 0;

  function findPos(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
      do {
        curtop += obj.offsetTop;
      } while (obj = obj.offsetParent);
      return [curtop];
    }
  }

  $(window).scroll(function(event) {
    var st = $(this).scrollTop();
    if (st > lastScrollTop) {
      $('html, body').animate({
        scrollTop: $("#space_od").offset().top
      }, 500);
    } else {
      $('html, body').animate({
        scrollTop: $("#black_hole").offset().top
      }, 500);
    }
    lastScrollTop = st;
  });
});
body {
  padding: 0;
  margin: 0;
}

#black_hole {
  background-image: url("black_hole.jpg");
  background-position: center;
  display: block;
  height: 100vh;
  width: 100%;
}

#space_od {
  background-image: url("2001.png");
  background-position: center;
  display: block;
  height: 100vh;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="black_hole">
</div>
<div id="space_od">
</div>

Parece funcionar bien cuando se desplaza hacia abajo la primera vez, pero no cuando se desplaza hacia arriba, parece moverse unos pocos píxeles y luego detenerse. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta