diff --git a/lib/traco/class_methods.rb b/lib/traco/class_methods.rb
index <HASH>..<HASH> 100644
--- a/lib/traco/class_methods.rb
+++ b/lib/traco/class_methods.rb
@@ -10,7 +10,7 @@ module Traco
     end
 
     def human_attribute_name(attribute, options={})
-      default = super(attribute, { default: "" }.merge(options))
+      default = super(attribute, options.merge(default: ""))
       if !default.present? && attribute.to_s.match(/\A(\w+)_([a-z]{2})\z/)
         column, locale = $1, $2.to_sym
         if translates?(column)
diff --git a/spec/traco_spec.rb b/spec/traco_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/traco_spec.rb
+++ b/spec/traco_spec.rb
@@ -123,4 +123,14 @@ describe Post, ".human_attribute_name" do
     Post.human_attribute_name(:body_sv).should == "Body sv"
   end
 
+  # ActiveModel::Errors#full_messages passes in an ugly default.
+
+  it "should not yield to passed-in defaults" do
+    Post.human_attribute_name(:title_en, default: "Title en").should == "Titel (engelska)"
+  end
+
+  it "should pass through defaults" do
+    Post.human_attribute_name(:body_sv, default: "Boday").should == "Boday"
+  end
+
 end
Fix human_attribute_name with Errors#full_messages.