Is `merge( MoneyColumn.new( columns[i+1] ) )` causing an action / change to the data, or is it returned a boolean value?  Either way, I'd suggest having it on the same line as `MoneyColumn.new( columns[i] ).` for readability.  If it's returning a boolean value, I'd rename it to `merge?`, and if it's destructive or causing side effects, I'd rename it `merge!`.