diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/basic.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/basic.js
deleted file mode 100644
index 9dda40da29..0000000000
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/basic.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (C) 2021 Igalia, S.L. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-temporal.plainyearmonth.prototype.since
-description: Basic calls to PYM.since.
-includes: [temporalHelpers.js]
-features: [Temporal]
----*/
-
-const feb20 = new Temporal.PlainYearMonth(2020, 2);
-const feb21 = new Temporal.PlainYearMonth(2021, 2);
-const oneYear = Temporal.Duration.from('P1Y');
-const twelveMonths = Temporal.Duration.from('P12M');
-
-TemporalHelpers.assertDurationsEqual(feb21.since(feb20), oneYear, 'Returns year by default');
-TemporalHelpers.assertDurationsEqual(feb21.since(feb20,  { largestUnit: 'auto' }), oneYear, 'Returns year by default');
-
-TemporalHelpers.assertDurationsEqual(feb21.since(feb20, { largestUnit: 'years' }), oneYear, 'Returns year explicitly');
-TemporalHelpers.assertDurationsEqual(feb21.since(feb20, { largestUnit: 'months' }), twelveMonths, 'Returns months when requested.');
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-auto.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-auto.js
new file mode 100644
index 0000000000..d483a24c5a
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-auto.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.since
+description: auto value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(later.since(earlier, { largestUnit: "auto" }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "auto largestUnit is year (pos)");
+TemporalHelpers.assertDuration(earlier.since(later, { largestUnit: "auto" }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "auto largestUnit is year (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-months.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-months.js
new file mode 100644
index 0000000000..5a8418d65c
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-months.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.since
+description: months value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(later.since(earlier, { largestUnit: "months" }),
+  0, 13, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is months (pos)");
+TemporalHelpers.assertDuration(earlier.since(later, { largestUnit: "months" }),
+  0, -13, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is months (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-undefined.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-undefined.js
index a46007e161..29d5bc6cbd 100644
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-undefined.js
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-undefined.js
@@ -11,7 +11,12 @@ features: [Temporal]
 const earlier = new Temporal.PlainYearMonth(2000, 5);
 const later = new Temporal.PlainYearMonth(2001, 6);
 
-const explicit = later.since(earlier, { largestUnit: undefined });
-TemporalHelpers.assertDuration(explicit, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year");
-const implicit = later.since(earlier, {});
-TemporalHelpers.assertDuration(implicit, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year");
+TemporalHelpers.assertDuration(later.since(earlier, { largestUnit: undefined }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, pos)");
+TemporalHelpers.assertDuration(earlier.since(later, { largestUnit: undefined }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, neg)");
+
+TemporalHelpers.assertDuration(later.since(earlier, {}),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, pos)");
+TemporalHelpers.assertDuration(earlier.since(later, {}),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-years.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-years.js
new file mode 100644
index 0000000000..51dd0828c0
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit-years.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.since
+description: years value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(later.since(earlier, { largestUnit: "years" }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is years (pos)");
+TemporalHelpers.assertDuration(earlier.since(later, { largestUnit: "years" }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is years (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit.js
deleted file mode 100644
index edff6655a7..0000000000
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/largestunit.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (C) 2021 Igalia, S.L. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-temporal.plainyearmonth.prototype.since
-description: Specify behavior of PlainYearMonth.since when largest specified unit is years or months.
-includes: [temporalHelpers.js]
-features: [Temporal]
----*/
-const nov2020 = new Temporal.PlainYearMonth(2020, 11);
-const dec2021 = new Temporal.PlainYearMonth(2021, 12);
-TemporalHelpers.assertDuration(dec2021.since(nov2020), 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'does not include higher units than necessary (largest unit unspecified)');
-TemporalHelpers.assertDuration(dec2021.since(nov2020, { largestUnit: 'years' }), 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'does not include higher units than necessary (largest unit is years)');
-TemporalHelpers.assertDuration(dec2021.since(nov2020, { largestUnit: 'months' }), 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,  'does not include higher units than necessary (largest unit is months)');
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/negation.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/negation.js
deleted file mode 100644
index 4bf259322b..0000000000
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/negation.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (C) 2021 Igalia, S.L. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-temporal.plainyearmonth.prototype.since
-description: Since returns negative and positive values
-includes: [temporalHelpers.js]
-features: [Temporal]
----*/
-
-const nov94 = new Temporal.PlainYearMonth(1994, 11);
-const jun13 = new Temporal.PlainYearMonth(2013, 6);
-const diff = jun13.since(nov94);
-
-TemporalHelpers.assertDurationsEqual(nov94.since(jun13), diff.negated(), 'Since is inverse of until');
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/options-undefined.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/options-undefined.js
index c55628a010..061104a651 100644
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/options-undefined.js
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/options-undefined.js
@@ -4,16 +4,19 @@
 /*---
 esid: sec-temporal.plainyearmonth.prototype.since
 description: Verify that undefined options are handled correctly.
+includes: [temporalHelpers.js]
 features: [Temporal]
 ---*/
 
 const earlier = new Temporal.PlainYearMonth(2000, 5);
 const later = new Temporal.PlainYearMonth(2002, 12);
 
-const explicit = later.since(earlier, undefined);
-assert.sameValue(explicit.years, 2, "default largest unit is years");
-assert.sameValue(explicit.months, 7, "default smallest unit is months and rounding is none");
+TemporalHelpers.assertDuration(later.since(earlier, undefined),
+  2, 7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, pos)");
+TemporalHelpers.assertDuration(earlier.since(later, undefined),
+  -2, -7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, neg)");
 
-const implicit = later.since(earlier);
-assert.sameValue(implicit.years, 2, "default largest unit is years");
-assert.sameValue(implicit.months, 7, "default smallest unit is months and rounding is none");
+TemporalHelpers.assertDuration(later.since(earlier),
+  2, 7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, pos)");
+TemporalHelpers.assertDuration(earlier.since(later),
+  -2, -7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-auto.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-auto.js
new file mode 100644
index 0000000000..01d4cace87
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-auto.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.until
+description: auto value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(earlier.until(later, { largestUnit: "auto" }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "auto largestUnit is year (pos)");
+TemporalHelpers.assertDuration(later.until(earlier, { largestUnit: "auto" }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "auto largestUnit is year (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-months.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-months.js
new file mode 100644
index 0000000000..7df71e6a45
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-months.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.until
+description: months value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(earlier.until(later, { largestUnit: "months" }),
+  0, 13, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is months (pos)");
+TemporalHelpers.assertDuration(later.until(earlier, { largestUnit: "months" }),
+  0, -13, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is months (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-undefined.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-undefined.js
index 4222cfe938..f7de1b004c 100644
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-undefined.js
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-undefined.js
@@ -11,7 +11,12 @@ features: [Temporal]
 const earlier = new Temporal.PlainYearMonth(2000, 5);
 const later = new Temporal.PlainYearMonth(2001, 6);
 
-const explicit = earlier.until(later, { largestUnit: undefined });
-TemporalHelpers.assertDuration(explicit, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year");
-const implicit = earlier.until(later, {});
-TemporalHelpers.assertDuration(implicit, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year");
+TemporalHelpers.assertDuration(earlier.until(later, { largestUnit: undefined }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, pos)");
+TemporalHelpers.assertDuration(later.until(earlier, { largestUnit: undefined }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, neg)");
+
+TemporalHelpers.assertDuration(earlier.until(later, {}),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, pos)");
+TemporalHelpers.assertDuration(later.until(earlier, {}),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-years.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-years.js
new file mode 100644
index 0000000000..770e640561
--- /dev/null
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/largestunit-years.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2022 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal.plainyearmonth.prototype.until
+description: years value for largestUnit option
+includes: [temporalHelpers.js]
+features: [Temporal]
+---*/
+
+const earlier = new Temporal.PlainYearMonth(2000, 5);
+const later = new Temporal.PlainYearMonth(2001, 6);
+
+TemporalHelpers.assertDuration(earlier.until(later, { largestUnit: "years" }),
+  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is years (pos)");
+TemporalHelpers.assertDuration(later.until(earlier, { largestUnit: "years" }),
+  -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, "largestUnit is years (neg)");
diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/options-undefined.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/options-undefined.js
index 6717e477c6..6b87be9db0 100644
--- a/test/built-ins/Temporal/PlainYearMonth/prototype/until/options-undefined.js
+++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/options-undefined.js
@@ -4,16 +4,19 @@
 /*---
 esid: sec-temporal.plainyearmonth.prototype.until
 description: Verify that undefined options are handled correctly.
+includes: [temporalHelpers.js]
 features: [Temporal]
 ---*/
 
 const earlier = new Temporal.PlainYearMonth(2000, 5);
 const later = new Temporal.PlainYearMonth(2002, 12);
 
-const explicit = earlier.until(later, undefined);
-assert.sameValue(explicit.years, 2, "default largest unit is years");
-assert.sameValue(explicit.months, 7, "default smallest unit is months and rounding is none");
+TemporalHelpers.assertDuration(earlier.until(later, undefined),
+  2, 7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, pos)");
+TemporalHelpers.assertDuration(later.until(earlier, undefined),
+  -2, -7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (explicit, neg)");
 
-const implicit = earlier.until(later);
-assert.sameValue(implicit.years, 2, "default largest unit is years");
-assert.sameValue(implicit.months, 7, "default smallest unit is months and rounding is none");
+TemporalHelpers.assertDuration(earlier.until(later),
+  2, 7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, pos)");
+TemporalHelpers.assertDuration(later.until(earlier),
+  -2, -7, 0, 0, 0, 0, 0, 0, 0, 0, "default largestUnit is year (implicit, neg)");