Ciao,
per prima cosa correggi
$total_page++ if ( scalar(@topics) % 10 != 0);
con
$total_page++ if ( scalar(@topics) % $topics_per_page != 0);
poi... come stampi la pagina?
penso che il problema sia li, in un mancato controllo sulla fine dei topic