     
     # What would be the game time now if we simulated for this duration?
     simulationEndGameTime = gameStateDocument.state.gameTime + elapsedGameTime
-    
+
+    # Just update game time if no events are pending.
+    unless gameStateDocument.events.length
+      @_updateGameTime gameStateDocument, simulationEndGameTime
+      return
+
     # Keep processing events that happen before the end time.
     eventsProcessedCount = 0
 

        readOnlyState: gameStateDocument.readOnlyState
        events: gameStateDocument.events

# Initialize on startup.
Document.startup ->
  # Simulate game state every 10 minutes.

        # Event was not processed so we stop here.
        break

    # Just update game time if no events were processed.
    unless eventsProcessedCount
      @_updateGameTime gameStateDocument, simulationEndGameTime
      return

    # Move game time to end time, unless the blocking event was earlier.
    gameStateDocument.state.gameTime = simulationEndGameTime unless earliestEvent.gameTime < simulationEndGameTime
