diff --git a/lib/rom/factory/attributes/callable.rb b/lib/rom/factory/attributes/callable.rb
index <HASH>..<HASH> 100644
--- a/lib/rom/factory/attributes/callable.rb
+++ b/lib/rom/factory/attributes/callable.rb
@@ -13,8 +13,7 @@ module ROM::Factory
 
       # @api private
       def call(attrs, *args)
-        return if attrs.key?(name)
-        result = dsl.instance_exec(*args, &block)
+        result = attrs[name] || dsl.instance_exec(*args, &block)
         { name => result }
       end
try to fix overwritten attributes with dependencies