diff --git a/includes/rules.plugins.inc b/includes/rules.plugins.inc
index 504d556..845eaa9 100644
--- a/includes/rules.plugins.inc
+++ b/includes/rules.plugins.inc
@@ -585,6 +585,21 @@ class RulesLoop extends RulesActionContainer {
         $state2->addVariable($item_var_name, $list[$key], $item_var_info);
         parent::evaluate($state2);
 
+        // Get the variables created during this iteration.
+        $new_variables = array_diff_key($state2->variables, $state->variables);
+        // Remove the list item explicitly.
+        unset($new_variables[$item_var_name]);
+
+        foreach ($new_variables as $selector => $new_variable) {
+          // Manually check if $new_variable is saveable. It might not be
+          // wrapped.
+          if ($state2->isSavable($new_variable)) {
+            // Force save since the variable will be lost when this iteration
+            // goes out of scope.
+            $state2->saveChanges($selector, $new_variable, TRUE);
+          }
+        }
+
         // Update variables from parent scope.
         foreach ($state->variables as $var_key => &$var_value) {
           if (array_key_exists($var_key, $state2->variables)) {
