diff --git a/lib/show_for/helper.rb b/lib/show_for/helper.rb
index <HASH>..<HASH> 100644
--- a/lib/show_for/helper.rb
+++ b/lib/show_for/helper.rb
@@ -10,8 +10,10 @@ module ShowFor
     #   end
     #
     def show_for(object, html_options={}, &block)
-      tag = html_options.delete(:show_for_tag) || ShowFor.show_for_tag
+      html_options = html_options.dup
 
+      tag = html_options.delete(:show_for_tag) || ShowFor.show_for_tag
+    
       html_options[:id]  ||= dom_id(object)
       html_options[:class] = show_for_html_class(object, html_options)
 
diff --git a/test/helper_test.rb b/test/helper_test.rb
index <HASH>..<HASH> 100644
--- a/test/helper_test.rb
+++ b/test/helper_test.rb
@@ -44,4 +44,11 @@ class HelperTest < ActionView::TestCase
       assert_select "div.show_for.user.awesome"
     end
   end
+  
+  test "show for tag should be configurable for each iteration" do
+    html_options = {:show_for_tag => :li}
+    concat( [@user, @user, @user].collect{ |user| show_for(user, html_options){|f|} }.join.html_safe )
+    assert_select "div.show_for.user", false
+  end
+  
 end
fix for show_for_tag being ignored on subsequent show_for calls during loop iteration