diff --git a/database/database_table.py b/database/database_table.py
index ed495b6c8ba6a17ee6bd069d637b24d0a93cd0c7..db3555f990ef68f10c874c4c4253c0595df989b1 100644
--- a/database/database_table.py
+++ b/database/database_table.py
@@ -787,10 +787,10 @@ class DatabaseTable(Table):
             # This variable has been evaluated already, just return
             return self._derivatives[target]
 
-        if target is not None and target in recursion_list:
+        if target is not None and str(self) + '.' + target in recursion_list:
             # This is a circular reference. Don't be like that.
             print(target)
-            raise CircularReferenceError
+            raise CircularReferenceError(target)
 
         original = self._protocol.original_from_target(target, year) or original
         try:
@@ -826,7 +826,7 @@ class DatabaseTable(Table):
         str_list = re.findall(r'("[\w]+"|[\w]+)', original)
         level = 0
         substitutions = []
-        recursion_list.append(target)
+        recursion_list.append(str(self) + '.' + target)
         for substring in str_list:
             derivative = self._derivative_recursion(substring.strip('"'), year,
                                                    recursion_list=recursion_list)