From 520a734ad9c7348f4e4858ee24640f42c88fd389 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Fri, 24 Jul 2020 15:21:08 -0700 Subject: Fix Time#ceil when result should be the same as the receiver Fixes [Bug #17025] --- time.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'time.c') diff --git a/time.c b/time.c index 51b7a262ac..3073e154c9 100644 --- a/time.c +++ b/time.c @@ -4446,7 +4446,10 @@ time_ceil(int argc, VALUE *argv, VALUE time) v = w2v(rb_time_unmagnify(tobj->timew)); v = modv(v, den); - return time_add(tobj, time, subv(den, v), 1); + if (!rb_equal(v, INT2FIX(0))) { + v = subv(den, v); + } + return time_add(tobj, time, v, 1); } /* -- cgit v1.2.3