Removed the specs that test for a RangeError. Here's why: * In MRI, the C function that does the main work of #<< converts an argument to fit in a C long type. The C long type encodes a max value that is bigger than a Fixnum. So there are a range of Bignums > max fixnum but <= max C long that can be passed as an argument to #<< or #>> when the argument is negative. Since this boundary is not visible in any Ruby type, and is essentially an implementation detail where Fixnums are tagged pointers, these behaviors are left undefined in RubySpec. * The behavior of checking for a RangeError is not symmetric between #<< and #>>. Since #>> with negative argument is equivalent to calling #<< with positive argument, when to check and when not to check for RangeError becomes very twisty in the code. Both methods should have a precondition that the argument is a Fixnum.