Ad occhio l'undefined te lo da quando arrivi all'ultimo elemento della lista e fai +1, ovvero punti ad un elemento inesistente.
In quel caso dovresti ripuntare al primo elemento. Tipo così:
codice:
if(!next_anchor.length) next_anchor = $('.highlight:eq(0)');
Poi, meglio usare usare position(), che è relativo al parent, invece di offset(), che è relativo al documento.
Inoltre position() è influenzato da quanto hai scrollato, non ti da un valore assoluto, quindi quando scrolli devi tenerne conto, tipo così
codice:
$('#content').animate({scrollTop: next_anchor.position().top + $('#content').scrollTop() - 10 });
Oppure usi http://demos.flesler.com/jquery/scrollTo/