rubyの奇妙な行動

#!/usr/bin/env ruby
ax=%w(a-2 b-1 c0 d1 e2 f3)
ax.each do |i|
  i.sub!(/-?\d+/) do
    x=$&
    x.to_i +2    #--- A  
    # x.to_i +  2
 end
 puts i 

end

上のruby scriptを実行すると
a0
b-1
c0
d1
e0
f0

と奇妙な結果になる。

#--- A の行をcommentにして、その次の行をcomment outすると、正常な結果になる。

(ruby 2.1.4p265 (2014-10-27 revision 48166) [i686-linux])