What was broken
Carbon is a PHP date library used by Laravel, among many others. Its round(), floor() and ceil() methods take a precision either as a unit name ('hour') or as a number, which the documentation and tests describe as a number of seconds. Below 60 everything worked, for example round(5) rounded to 5 seconds. From 60 upwards the result stayed locked inside the seconds field:
For a numeric precision the code set the unit to second and rounded only the seconds value, which stays in the 0-59 range. With a precision of 3600 the result was always zero, and minutes and hours were never touched. The same bug affected the string form '3600 seconds'.
What we changed
In roundUnit(), a numeric precision that spans the whole next unit is now carried upwards: 3600 seconds become 60 minutes, and 60 minutes become an hour. The list of steps only contains units of a fixed size, so a precision in days is never carried into months, which have a varying number of days.
How we tested it
A new test compares numeric precisions with their string forms: round(3600) with round('hour'), round(120) with round('2 minutes'), round(86400) with round('day'), plus floor(3600) just before a full hour and ceil(3600) at half past.
The result
The change was merged on 25 September 2026. A numeric precision in Carbon now behaves the same as the unit name it stands for.