How to use set_items_per_page? Background

I'm having a go at porting the JavaScript random views module from 6 to 7.

Problem

One of functions I think is intended to override the default pager value to load extra rows per page. (i.e. pager says load 8. This overrides it and says load 20).

To accomplish this it uses hook_views_pre_execute

function views_javascript_random_views_pre_execute(&amp;$view) {
  .....

  // Here it saves the current settings of the pager for use later
  .....

  // Set new settings
  $view-&gt;set_items_per_page($sorts['js_random']['client_node_count']);
}


Unfortunately the set_items_per_page function doesn't seem to work. While it still sets:

$view-&gt;items_per_page

This then seems to have no effect on how many rows are then loaded in:

function views_javascript_random_preprocess (&amp;$vars, $hook) {
   ....
   dpm($vars);
} 


In $vars-&gt;rows, it still only loads the number of rows set by the pager (i.e. 8 not 20)

The API function definitely still works in 7. Could someone explain why it's not working correctly in this case?
I have successfully used $view-&gt;set_items_per_page() in hook_views_pre_build(). The problem might be that in hook_views_pre_execute() the pager settings have already been built, so you might have to update those as well, with something like $view-&gt;display_handler-&gt;get_plugin('pager')-&gt;get_items_per_page().