Index: paging.module
===================================================================
--- paging.module
+++ paging.module
@@ -462,10 +462,17 @@
             $body = $node_body;
             $breaks = (int)($total_chars / $max_chars);
             $bodypart = array();
-            for ($i = 0; $i <= $breaks; $i++) {
-              $bodypart[$i] = node_teaser($body, NULL, $max_chars);
-              $bodycount = strlen($bodypart[$i]);
-              $body = substr($body, $bodycount);
+            while (strlen($body)) {
+              $part = node_teaser($body, NULL, $max_chars);
+              $body = substr($body, strlen($part));
+              
+              // If the next page (most likely last) has 1/10 of the maxchars, put it on the previous page
+              if (variable_get('paging_automatic_method_reallocate', 1) && count($bodypart) && strlen($part) < $max_chars / 10) {
+                $bodypart[count($bodypart) - 1] .= $part;
+              }
+              else {
+                $bodypart[] = $part;
+              }
             }
             $body_parts = implode($paging_separator, $bodypart);
           }

