IRubyObject z = callMethod(context, "%", dividend);
IRubyObject x = this;
RubyFixnum zero = RubyFixnum.zero(getRuntime());
if (!equalInternal(context, z, zero) &&
((x.callMethod(context, MethodIndex.OP_LT, "<", zero).isTrue() &&
dividend.callMethod(context, MethodIndex.OP_GT, ">", zero).isTrue()) ||
(x.callMethod(context, MethodIndex.OP_GT, ">", zero).isTrue() &&
dividend.callMethod(context, MethodIndex.OP_LT, "<", zero).isTrue()))) {
return z.callMethod(context, MethodIndex.OP_MINUS, "-", dividend);
} else {