It performs the following steps when called:
+It performs the following steps when called:
+@@ -1087,8 +1130,14 @@ contributors: Google, Ecma International 1. Let _ordinalMonth_ be _fields_.[[Month]]. 1. Let _day_ be _fields_.[[Day]]. 1. Assert: _day_ is not ~unset~. - 1. If the date described by _calendar_, _arithmeticYear_, _ordinalMonth_, and _day_ does not exist, set _day_ to the closest day in the same month. If there are two equally-close dates in the same month, pick the later one. - 1. Return an implementation-defined ISO Date Record that corresponds to the date described by _calendar_, _arithmeticYear_, _ordinalMonth_, and _day_. + 1. Let _daysInMonth_ be CalendarDaysInMonth(_calendar_, _arithmeticYear_, _ordinalMonth_). + 1. If _daysInMonth_ < _day_, then + 1. If _overflow_ is ~reject~, throw a *RangeError* exception. + 1. Let _regulatedDay_ be _daysInMonth_. + 1. Else, + 1. Assert: _day_ ≥ 1. + 1. Let _regulatedDay_ be _day_. + 1. Return ? CalendarIntegersToISO(_calendar_, _arithmeticYear_, _ordinalMonth_, _regulatedDay_).