ISO Week Numbers and ranges

I’m trying to properly sort out how to get ISO week numbers and ranges without dropping down to Java.

The correct data I’m trying to get is best demonstrated here: Week Numbers for 2021

So a week starts on a Monday.

// Week 38	September 20, 2021 - September 26, 2021
// A Sunday
aSunday = createDate(2021, 09, 26);  

// Result is 40, should be 38
dump(week(aSunday));

// Result is 1, should be 7
dump(DayOfWeek( aSunday )); 

// returns 38 - yay!
dump(getISOWeek(aSunday));

// returns 7 - yay!
dump(ISODayOfWeek(aSunday));

public function ISODayOfWeek(date seeddate = now()){
  	return ( ( ( DayOfWeek( ARGUMENTS.seeddate ) + (7 - 2) ) MOD 7 ) + 1 );
}
public function getISOWeek(date seeddate = now()){
    var date = CreateObject("java","java.util.Calendar").getInstance();
        date.set(year(seeddate), month(seeddate) -1, day(seeddate));
        date.setFirstDayOfWeek(date.MONDAY);
        date.setMinimalDaysInFirstWeek(4);
    return date.get(date.WEEK_OF_YEAR);
}

I guess my question is, is there a better way to do this in Lucee with built in functions? (I also need to be able to give a function a year and week and return the date range that it satisifies, but thought I’d start here…)
Cheers!