Index: /branches/release-39/lib/MT/CMS/Tag.pm
===================================================================
--- /branches/release-39/lib/MT/CMS/Tag.pm (revision 1873)
+++ /branches/release-39/lib/MT/CMS/Tag.pm (revision 2454)
@@ -387,5 +387,9 @@
     $arg{'sort'} = 'name';
     $arg{limit} = $limit + 1;
-    if ( $total && $offset > $total - 1 ) {
+    if ( $total <= $limit ) {
+        delete $arg{limit};
+        $offset = 0;
+    }
+    elsif ( $total && $offset > $total - 1 ) {
         $arg{offset} = $offset = $total - $limit;
     }
Index: /branches/release-39/lib/MT/CMS/TrackBack.pm
===================================================================
--- /branches/release-39/lib/MT/CMS/TrackBack.pm (revision 2169)
+++ /branches/release-39/lib/MT/CMS/TrackBack.pm (revision 2454)
@@ -245,12 +245,16 @@
     $arg{direction} = $sort_direction;
     $arg{limit}     = $limit + 1;
-    if ( $total && $offset > $total - 1 ) {
+    if ( $total <= $limit ) {
+        delete $arg{limit};
+        $offset = 0;
+    }
+    elsif ( $total && $offset > $total - 1 ) {
         $arg{offset} = $offset = $total - $limit;
     }
     elsif ( $offset && ( ( $offset < 0 ) || ( $total - $offset < $limit ) ) ) {
-        $arg{offset} = $offset = 0;
-    }
-    elsif ($offset) {
-        $arg{offset} = $offset;
+        $arg{offset} = $offset = $total - $limit;
+    }
+    else {
+        $arg{offset} = $offset if $offset;
     }
 
Index: /branches/release-39/lib/MT/CMS/Entry.pm
===================================================================
--- /branches/release-39/lib/MT/CMS/Entry.pm (revision 2417)
+++ /branches/release-39/lib/MT/CMS/Entry.pm (revision 2454)
@@ -559,9 +559,13 @@
     $arg{direction} = 'descend';
     $arg{limit}     = $limit + 1;
-    if ( $total && $offset > $total - 1 ) {
+    if ( $total <= $limit ) {
+        delete $arg{limit};
+        $offset = 0;
+    }
+    elsif ( $total && $offset > $total - 1 ) {
         $arg{offset} = $offset = $total - $limit;
     }
     elsif ( $offset && ( ( $offset < 0 ) || ( $total - $offset < $limit ) ) ) {
-        $arg{offset} = $offset = 0;
+        $arg{offset} = $offset = $total - $limit;
     }
     else {
