Menú de navegación de una sola página - indicador activo

Estoy tratando de actualizar la navegación para un sitio web de una sola página usando los puntos de ruta jQuery.

Quiero actualizar la navegación basada en la sección actual a la vista. Funciona bien al bajar usando los enlaces de navegación. Mi problema es cuando intenta desplazarse a una sección sobre la sección actual para ver que el ancla activa está debajo de donde debería estar.

Por favor vea miManifestación.

jQuery

$(document).ready(function(){
        $('section').waypoint(function(direction) {
          thisId = $(this).attr('id');
          $('ul li').each(function(){
            var secondaryID = $(this).attr('class');
            if  ( secondaryID == thisId )
                {
                    $('ul li').removeClass('active');
                    $(this).addClass('active');
                }
            });
    },{offset: '0'});   
}); 
$('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
        || location.hostname == this.hostname) {

        var target = $(this.hash);
        target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
           if (target.length) {
             $('html,body').animate({
                 scrollTop: target.offset().top
            }, 500);
            return false;
        }
    }
});

HTML

<ul>
    <li class="test"><a href="#test"></a></li>
    <li class="test2"><a href="#test2"></a></li>
    <li class="test3"><a href="#test3"></a></li>
    <li class="test4"><a href="#test4"></a></li>
    <li class="test5"><a href="#test5"></a></li>
</ul>
<section id="test"></section>
<section id="test2"></section>
<section id="test3"></section>
<section id="test4"></section>
<section id="test5"></section>

Actualizar

Conseguí que esto funcionara utilizando dos funciones de punto de referencia con diferentes compensaciones, pero claramente esta no es la mejor solución.

http://jsfiddle.net/SJkmh/10/

Tratando de encontrar una manera de especificar las compensaciones desde la misma función (dependiendo de la dirección), usé una variable para el desplazamiento con valores de (1 y -1), pero desafortunadamente solo usa +1.

http://jsfiddle.net/SJkmh/13/

Respuestas a la pregunta(1)

Su respuesta a la pregunta