(ZOMBIE THREAD)
Simple solution, do NOT use timers to establish time intervals that require accuracy.
Use the GSV instruction, and you want WAlLCLOCKTIME (send it to an array of 7 DINTs). Take the 'Seconds' value (PLC_Time[5]), and pass it through a DTR instruction to an internal OTE.
Done. A one second period one shot based off of the system clock.
This will still be slightly off, as the system clock isn't perfect, but it's a whole lot closer then using a timer instruction.
BST GSV WALLCLOCKTIME LocalDateTime PLC_Time[0] NXB DTR PLC_Time[5] 255 Sys_Old_Seconds OTE SYS_One_Second_OS BND