How to makeAlarm.write work for repeating alarms in TimeAlarms library

I’ve been banging my head against the code for around a week now and can’t get Alarm.write to work for a repeating alarm. It will work for a timerRepeat, but not an alarmRepeat.

Why does the following work;
Alarm.free(Alarm1On);
Alarm1On=0;
Alarm1On=Alarm.alarmRepeat(newTime, MorningAlarm);

But this does not?
Alarm.write(Alarm1On, newTime);

I’ve tried using .enable (even though the source and header files show .write as enabling the ID) and a disable/enable.

Does anyone know why .write doesn’t work for alarmRepeat, but does for timerRepeat, or how to make it work for alarm.repeat?

#include <Time.h>
#include <TimeAlarms.h>

AlarmID_t  Alarm1On, Alarm1Off; 
byte cntr=0; // counter to stop setNewAlarmTime from running more than once

void setup()
{
  Serial.begin(9600);
  setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011

  
  // **************************************************************************************  create the  initial alarms 
  Alarm1On=Alarm.alarmRepeat(8,29,2, MorningAlarm);  
  Alarm1Off=Alarm.alarmRepeat(8,29,5,EveningAlarm); 
   
}

void  loop(){  
  //digitalClockDisplay();
  Alarm.delay(1000); // wait one second between clock display
}


void setNewAlarmTime(){
 // create hour, minute and second variables, and another to string them together that will be useful to the TimeAlarms Library
 Serial.println(F("setNewAlarmTime tripped")); // serial print to tell if function actually tripped
time_t hrs, mins, secs, newTime;
hrs= 8;
mins=29;
secs=7;
newTime=AlarmHMS(hrs,mins,secs);



// ******************************************************** Set new on time
//************************************The next three lines work
 // Alarm.free(Alarm1On);
//  Alarm1On=0;
//  Alarm1On=Alarm.alarmRepeat(newTime, MorningAlarm);

// ******************The following line does not work
  Alarm.write(Alarm1On, newTime);

// **********************************************************Set new off alarm time
  secs=10;// push newTime's seconds from 7 to 10
  newTime=AlarmHMS(hrs,mins,secs);

 // Alarm.free(Alarm1Off);
 // Alarm1Off=1;
  //Alarm1Off=Alarm.alarmRepeat(newTime, EveningAlarm);
   Alarm.write(Alarm1Off, newTime);
 Serial.println(F("setNewAlarmTime ended and waiting for new alarms to trip")); // serial print to tell if function ended

}

// functions to be called when an alarm triggers:
void MorningAlarm(){
  Serial.print("Alarm1On tripped at "); 
  Serial.print(hour());
  Serial.print(F(":"));
  Serial.print(minute());
  Serial.print(F(":"));
  Serial.println(second());
  }

void EveningAlarm(){
  Serial.print("Alarm1Off tripped at "); 
  Serial.print(hour());
  Serial.print(F(":"));
  Serial.print(minute());
  Serial.print(F(":"));;
  Serial.println(second());
  Serial.println(); 
    if (cntr==0){ // This is only a test program.  Don't run setNewAlarmTime a second time
  setNewAlarmTime();   
  }
  else {
    Serial.println();
    Serial.println("Testing Complete");
  }
  cntr++;       
}