I cannot find a place where you call the SetGCOR() API or read any value from eeprom. Instead I see that you issue a software reset which will start erasing the eeprom in your initialization. In eeprom datasheet is a hint regarding the Start() API requiring a short wait until the first access.
That reset actually doesn't get called unless the button is pushed. So it shouldn't be a problem.
So- I need to get the gcor value from EEPROM bytes 0-1 and the ocor value from bytes 2-5, correct?
int32 ocor_new = EEPROMReadlong(2);
int32 ocor_old = (int32) (DelSig_DEC_OCOR_REG) + ((int32)(DelSig_DEC_OCORM_REG) << 8) + ((int32) (DelSig_DEC_OCORH_REG) <<16);
/* Add the offset correction read from EEPROM to the existing OCOR value */
int32 ocor = ocor_old + ocor_new;
/* Write the updated OCOR value back to registers */
DelSig_DEC_OCOR_REG += EEPROM_ReadByte(4);
/* Update the GCOR register with the GCOR adjustment read from EEPROM */
uint16 gcor_new = EEPROMReadtwobytes(0); //(Reads two bytes and combines into a uint16)