Update hook batch stops halfway through
The problem in this case is caused because results query differs between iterations.

You should replace:

$result = db_query_range('SELECT nid FROM {node} n WHERE n.type = :type AND n.status = 0', $sandbox['current'], $nodes_per_pass, array(':type' =&gt; 'event')); 

with 

$result = db_query_range('SELECT nid FROM {node} n WHERE n.type = :type AND n.status = 0 ORDER BY n.nid ASC', 0, $nodes_per_pass, array(':type' =&gt; 'event'));