Err... irb(main):001:0> def x; 1; end => nil irb(main):002:0> p x 1 => nil irb(main):003:0> if false irb(main):004:1> x = x() + 1 irb(main):005:1> end => nil irb(main):006:0> x => nil Don't tell me, it's some quirk of the way Ruby works. Sure looks like a bug though. Just in case: ruby 1.8.4 (2005-12-24) [i486-linux] Hmm... I just got a dejavu. Maybe I came across this before. T.