Hola,
Supongo que el problema esta en que usas:
Código PHP:
$pages = intval($total_records / $cantidad);
y luego en el bucle recorres desde 0 hasta $pages+1. Asi, 8/4=2, 4/4=1 y recorres para 8 la pagina 0,1,2, pero 7/4=1.8=1, y recorres 0, 1. Normalmente se usa la funcion ceil() en lugar de intval y luego en el for recorrer hasta $pages:
Código PHP:
$pages = ceil($total_records / $cantidad);
// ....
for ($i = 0; $i<$pages; $i++) {
if ($i == $pg) {
Asi, ceil(2)=2, ceil(1.8)=2, ceil(1)=1, ...
Saludos.