Don't you have that backwards? Typically the ! suffix on a method name in Ruby indicates that the method modifies state.
Also, why would (+ counter 1) have to change to (+! counter 1) ? The former doesn't modify state, it simply returns the sum, right?