diff --git a/code/libraries/koowa/libraries/model/behavior/paginatable.php b/code/libraries/koowa/libraries/model/behavior/paginatable.php
index <HASH>..<HASH> 100644
--- a/code/libraries/koowa/libraries/model/behavior/paginatable.php
+++ b/code/libraries/koowa/libraries/model/behavior/paginatable.php
@@ -65,14 +65,19 @@ class KModelBehaviorPaginatable extends KModelBehaviorAbstract
                 $offset = $state->offset;
                 $total  = $this->count();
 
-                // Recalculate the offset if it is higher than the total or set to the middle of a page.
                 if ($offset !== 0 && $total !== 0)
                 {
-                    if (($offset >= $total) || ($offset % $limit !== 0))
-                    {
+                    // Recalculate the offset if it is set to the middle of a page.
+                    if ($offset % $limit !== 0) {
+                        $offset -= ($offset % $limit);
+                    }
+
+                    // Recalculate the offset if it is higher than the total
+                    if ($offset >= $total) {
                         $offset = floor(($total - 1) / $limit) * $limit;
-                        $state->offset = $offset;
                     }
+
+                    $state->offset = $offset;
                 }
 
                 $context->query->limit($limit, $offset);
re #<I>: Recalculate the offset if it's set to the middle of a page.