diff --git a/src/engine.c b/src/engine.c
index 999bd59af74e7b726543ba39c226b8f29fccd61d..bcc2014e410bef24b0dc7943dbedf87f0b6abcfc 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -801,7 +801,7 @@ void engine_init ( struct engine *e , struct space *s , float dt , int nr_thread
         #if defined(HAVE_SETAFFINITY)
         
             /* Set a reasonable queue ID. */
-            e->runners[k].qid = cpuid[ k ] * nr_queues / nr_threads;
+            e->runners[k].qid = cpuid[ k ] * nr_queues / nr_cores;
             
             /* Set the cpu mask to zero | e->id. */
             CPU_ZERO( &cpuset );
@@ -812,7 +812,7 @@ void engine_init ( struct engine *e , struct space *s , float dt , int nr_thread
                 error( "Failed to set thread affinity." );
                 
         #else
-            e->runners[k].qid = k % nr_queues;
+            e->runners[k].qid = k * nr_queues / nr_threads;
         #endif
         }