diff --git a/app/assets/javascripts/lib/utils/datetime/date_calculation_utility.js b/app/assets/javascripts/lib/utils/datetime/date_calculation_utility.js
index 6484fcff769e42bdabc0a8d12512f8bdbc2f608e..9bb2884e065f2a2c2844549931bda8aa7152f548 100644
--- a/app/assets/javascripts/lib/utils/datetime/date_calculation_utility.js
+++ b/app/assets/javascripts/lib/utils/datetime/date_calculation_utility.js
@@ -401,6 +401,8 @@ export const nWeeksBefore = (date, numberOfWeeks, options) =>
 
 /**
  * Returns the date `n` years after the date provided.
+ * When Feb 29 is the specified date, the default behaviour is to return March 1.
+ * But to align with the equivalent rails code, moment JS and datefns we should return Feb 28 instead.
  *
  * @param {Date} date the initial date
  * @param {Number} numberOfYears number of years after
@@ -408,7 +410,16 @@ export const nWeeksBefore = (date, numberOfWeeks, options) =>
  */
 export const nYearsAfter = (date, numberOfYears) => {
   const clone = newDate(date);
-  clone.setFullYear(clone.getFullYear() + numberOfYears);
+  clone.setUTCMonth(clone.getUTCMonth());
+
+  // If the date we are calculating from is Feb 29, return the equivalent result for Feb 28
+  if (clone.getUTCMonth() === 1 && clone.getUTCDate() === 29) {
+    clone.setUTCDate(28);
+  } else {
+    clone.setUTCDate(clone.getUTCDate());
+  }
+
+  clone.setUTCFullYear(clone.getUTCFullYear() + numberOfYears);
   return clone;
 };
 
diff --git a/spec/frontend/lib/utils/datetime_utility_spec.js b/spec/frontend/lib/utils/datetime_utility_spec.js
index 73a4af2c85d141d013e2f302292a443dfd9d982b..5027c924e6331384d8b97f3502686d79e070c99b 100644
--- a/spec/frontend/lib/utils/datetime_utility_spec.js
+++ b/spec/frontend/lib/utils/datetime_utility_spec.js
@@ -785,11 +785,16 @@ describe('date addition/subtraction methods', () => {
     );
   });
 
+  // NOTE: 2024-02-29 is a leap day
   describe('nYearsAfter', () => {
     it.each`
       date            | numberOfYears | expected
       ${'2020-07-06'} | ${1}          | ${'2021-07-06'}
       ${'2020-07-06'} | ${15}         | ${'2035-07-06'}
+      ${'2024-03-02'} | ${1}          | ${'2025-03-02'}
+      ${'2024-03-01'} | ${1}          | ${'2025-03-01'}
+      ${'2024-02-29'} | ${1}          | ${'2025-02-28'}
+      ${'2024-02-28'} | ${1}          | ${'2025-02-28'}
     `(
       'returns $expected for "$numberOfYears year(s) after $date"',
       ({ date, numberOfYears, expected }) => {
@@ -805,6 +810,10 @@ describe('date addition/subtraction methods', () => {
       date            | numberOfYears | expected
       ${'2020-07-06'} | ${4}          | ${'2016-07-06'}
       ${'2020-07-06'} | ${1}          | ${'2019-07-06'}
+      ${'2024-03-02'} | ${1}          | ${'2023-03-02'}
+      ${'2024-03-01'} | ${1}          | ${'2023-03-01'}
+      ${'2024-02-29'} | ${1}          | ${'2023-02-28'}
+      ${'2024-02-28'} | ${1}          | ${'2023-02-28'}
     `(
       'returns $expected for "$numberOfYears year(s) before $date"',
       ({ date, numberOfYears, expected }) => {