ControlFile->backupEndPoint = ControlFile->minRecoveryPoint;
            }
        }
-       ControlFile->time = (pg_time_t) time(NULL);
+
        /* No need to hold ControlFileLock yet, we aren't up far enough */
        UpdateControlFile();
 
     */
    LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
    ControlFile->state = DB_IN_PRODUCTION;
-   ControlFile->time = (pg_time_t) time(NULL);
 
    SpinLockAcquire(&XLogCtl->info_lck);
    XLogCtl->SharedRecoveryState = RECOVERY_STATE_DONE;
    {
        LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
        ControlFile->state = DB_SHUTDOWNING;
-       ControlFile->time = (pg_time_t) time(NULL);
        UpdateControlFile();
        LWLockRelease(ControlFileLock);
    }
        ControlFile->state = DB_SHUTDOWNED;
    ControlFile->checkPoint = ProcLastRecPtr;
    ControlFile->checkPointCopy = checkPoint;
-   ControlFile->time = (pg_time_t) time(NULL);
    /* crash recovery should always recover to the end of WAL */
    ControlFile->minRecoveryPoint = InvalidXLogRecPtr;
    ControlFile->minRecoveryPointTLI = 0;
     * changes to this point.
     */
    LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
-   ControlFile->time = (pg_time_t) time(NULL);
    ControlFile->minRecoveryPoint = recptr;
    ControlFile->minRecoveryPointTLI = xlrec.ThisTimeLineID;
    UpdateControlFile();
        {
            LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
            ControlFile->state = DB_SHUTDOWNED_IN_RECOVERY;
-           ControlFile->time = (pg_time_t) time(NULL);
            UpdateControlFile();
            LWLockRelease(ControlFileLock);
        }
    {
        ControlFile->checkPoint = lastCheckPointRecPtr;
        ControlFile->checkPointCopy = lastCheckPoint;
-       ControlFile->time = (pg_time_t) time(NULL);
 
        /*
         * Ensure minRecoveryPoint is past the checkpoint record.  Normally,
 
 #include <unistd.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <time.h>
 
 #include "access/xlog_internal.h"
 #include "catalog/pg_control.h"
    StaticAssertStmt(sizeof(ControlFileData) <= PG_CONTROL_FILE_SIZE,
                     "sizeof(ControlFileData) exceeds PG_CONTROL_FILE_SIZE");
 
+   /* Update timestamp  */
+   ControlFile->time = (pg_time_t) time(NULL);
+
    /* Recalculate CRC of control file */
    INIT_CRC32C(ControlFile->crc);
    COMP_CRC32C(ControlFile->crc,