Moving string position in array

So I had to make some tweaks to the code as far as the inertionPoint counter and the printAlarm function. I have the alarms printing out in descending order as to when they occured. The newAlarm function seems to be doing what I need it to do, not to just bring it back into my main program. Thanks to DavidOConnor for getting me on the right track!

#define ARRAYSIZE 20

struct alarm {
  int time;
  char *msg;
};

struct alarm alarms[ARRAYSIZE];

char *messages[10] = {
  "alarm message 1",
  "alarm message 2",
  "alarm message 3",
  "alarm message 4",
  "alarm message 5",
  "alarm message 6",
  "alarm message 7",
  "alarm message 8",
  "alarm message 9",
  "alarm message 10",
};

int insertionPoint=0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  for (int i = 0; i < 9; i++){
  newAlarm(i,millis()%0xFFFF);
  Serial.println("Alarm Buffer");
  printAlarms();
  delay(1000);
  }
}

void newAlarm(int msgIndex, int time) {
  alarms[insertionPoint].time = time;
  alarms[insertionPoint].msg = messages[msgIndex];
  if (insertionPoint < ARRAYSIZE - 1){
    insertionPoint++;
  }
    else{
      insertionPoint=0;
  }
  //++insertionPoint %= ARRAYSIZE;
}

void printAlarms() {

  for (int i = insertionPoint -1; i >= 0; i--){
      Serial.print("Current Step is - ");
      Serial.print(i);
      Serial.print(" - ");
      Serial.print(alarms[i].time);
      Serial.print(" ");
      Serial.println(alarms[i].msg);
    }
  for (int i = 19; i >= insertionPoint; i--){
      Serial.print("Current Step is - ");
      Serial.print(i);
      Serial.print(" - ");
      Serial.print(alarms[i].time);
      Serial.print(" ");
      Serial.println(alarms[i].msg);
    }
  }