FWIW a JS solution, using Application('Keyboard Maestro Engine').getvariable()
adjusted Date.kmmacros (19.5 KB)

Source of core function:
// adjustedDateString :: Int -> String -> String
const adjustedDateString = (intDays, strSlashedDayMonthYear) => {
const
dteIn = new Date(
Date.apply(null, strSlashedDayMonthYear.split('/')
.reverse()
)
),
dteOut = new Date(dteIn.setDate(dteIn.getDate() + intDays));
return ['Date', 'Month', 'FullYear']
.map(x => dteOut['get' + x]() + (x === 'Month' ? 1 : 0))
.join('/')
};
with tests (every date, at two day intervals, from 20 days before to 20 days later)
(() => {
'use strict';
// adjustedDateString :: Int -> String -> String
const adjustedDateString = (intDays, strSlashedDayMonthYear) => {
const
dteIn = new Date(
Date.apply(null, strSlashedDayMonthYear.split('/')
.reverse()
)
),
dteOut = new Date(dteIn.setDate(dteIn.getDate() + intDays));
return ['Date', 'Month', 'FullYear']
.map(x => dteOut['get' + x]() + (x === 'Month' ? 1 : 0))
.join('/')
};
// TESTS -----------------------------------------------------------------
// enumFromThenToInt :: Int -> Int -> Int -> [Int]
const enumFromThenToInt = (x1, x2, y) => {
const d = x2 - x1;
return Array.from({
length: Math.floor(y - x2) / d + 2
}, (_, i) => x1 + (d * i));
};
const strDate = Application('Keyboard Maestro Engine')
.getvariable('instanceBaseDate')
return enumFromThenToInt(-20, -18, 20)
.map(d => adjustedDateString(d, strDate))
.join('\n');
})();