diff --git a/src/runner.c b/src/runner.c
index 3f384dcd4fa55d2ca881372e3fe6a9fd1fd70f14..6805f927fecdafa136b85a932dd0b93a6c3ca8fc 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -477,7 +477,7 @@ void *runner_main ( void *data ) {
         
         /* Set some convenient local data. */
         keep = e->policy & engine_policy_keep;
-        myq = &e->queues[ threadID % e->nr_queues ];
+        myq = &e->queues[ threadID * e->nr_queues / e->nr_threads ];
         tpq = ceil( ((double)e->nr_threads) / e->nr_queues );
         #ifdef TIMER
             stalled = 0;