diff --git a/panels_ref_formatter.module b/panels_ref_formatter.module
index 91c62aa..36f23dc 100644
--- a/panels_ref_formatter.module
+++ b/panels_ref_formatter.module
@@ -1,5 +1,5 @@
 <?php
-
+define("REF_FORMATTER_MAX_RECURSIVE", 10);
 /**
  * Implements hook_field_formatter_info().
  */
@@ -62,7 +62,7 @@ function panels_ref_formatter_field_formatter_view($entity_type, $entity, $field
       $entity->referencing_entity = $entity;
       // Only render this entity if we haven't done it before. If we do this over
       // and over, things will go bad.
-      if (!isset($rendered_entities[$id]) && (isset($item['access']) ? $item['access'] : TRUE)) {
+      if ((!isset($rendered_entities[$id]) || $rendered_entities[$id] < REF_FORMATTER_MAX_RECURSIVE) && (isset($item['access']) ? $item['access'] : TRUE)) {
         // We assume that the first required context is the node and po
         $contexts = array(ctools_context_create('entity:' . $target_type, $entity));
         $context = ctools_context_match_required_contexts($panel->requiredcontexts, $contexts);
@@ -86,7 +86,7 @@ function panels_ref_formatter_field_formatter_view($entity_type, $entity, $field
           $result[$delta]['#suffix'] = '</span>';
         }
       }
-      $rendered_entities[$id] = TRUE;
+      $rendered_entities[$id] = isset($rendered_entities[$id]) ? $rendered_entities[$id]+1 : 1;
     }
   }
   return $element;
