Index: numeric.c =================================================================== --- numeric.c (revision 22907) +++ numeric.c (working copy) @@ -1954,7 +1954,7 @@ out_of_range: rb_raise(rb_eRangeError, "%"PRIdVALUE " out of char range", i); } - c = i; + c = (char)i; if (i < 0x80) { return rb_usascii_str_new(&c, 1); }