diff --git a/core/modules/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc
index 5ca2345..9b81d8f 100644
--- a/core/modules/taxonomy/taxonomy.admin.inc
+++ b/core/modules/taxonomy/taxonomy.admin.inc
@@ -146,12 +146,18 @@ function taxonomy_overview_terms($form, &$form_state, Vocabulary $vocabulary) {
   $term_deltas = array();
   $tree = taxonomy_get_tree($vocabulary->id(), 0, NULL, TRUE);
   $term = current($tree);
+  $step_back = FALSE;
   do {
     // In case this tree is completely empty.
     if (empty($term)) {
       break;
     }
     $delta++;
+    // Move back to first element if it is at the root.
+    if ($step_back) {
+      $term = prev($tree);
+      $step_back = FALSE;
+    }
     // Count entries before the current page.
     if ($page && ($page * $page_increment) > $before_entries && !isset($back_step)) {
       $before_entries++;
@@ -170,7 +176,10 @@ function taxonomy_overview_terms($form, &$form_state, Vocabulary $vocabulary) {
         $before_entries--;
         $back_step++;
         if ($pterm->depth == 0) {
-          prev($tree);
+          if (!prev($tree)) {
+            // Move to the first element at next root level loop
+            $step_back = reset($tree);
+          }
           continue 2; // Jump back to the start of the root level parent.
        }
       }
