Index: libcfa/src/concurrency/kernel.hfa
===================================================================
--- libcfa/src/concurrency/kernel.hfa	(revision 3143f283a40b40ae535cc501e42b7af25b0d3cac)
+++ libcfa/src/concurrency/kernel.hfa	(revision 08e7521543e88f21355a3e37099deb79c718b513)
@@ -69,4 +69,7 @@
 	// Cluster from which to get threads
 	struct cluster * cltr;
+
+	// Id within the cluster
+	unsigned cltr_id;
 
 	// Set to true to notify the processor should terminate
Index: libcfa/src/concurrency/kernel/startup.cfa
===================================================================
--- libcfa/src/concurrency/kernel/startup.cfa	(revision 3143f283a40b40ae535cc501e42b7af25b0d3cac)
+++ libcfa/src/concurrency/kernel/startup.cfa	(revision 08e7521543e88f21355a3e37099deb79c718b513)
@@ -486,5 +486,5 @@
 
 		// Adjust the ready queue size
-		ready_queue_grow( cltr, target );
+		this.cltr_id = ready_queue_grow( cltr, target );
 
 	// Unlock the RWlock
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 3143f283a40b40ae535cc501e42b7af25b0d3cac)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 08e7521543e88f21355a3e37099deb79c718b513)
@@ -278,5 +278,5 @@
 //-----------------------------------------------------------------------
 // Increase the width of the ready queue (number of lanes) by 4
-void ready_queue_grow  (struct cluster * cltr, int target);
+unsigned ready_queue_grow  (struct cluster * cltr, int target);
 
 //-----------------------------------------------------------------------
Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision 3143f283a40b40ae535cc501e42b7af25b0d3cac)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision 08e7521543e88f21355a3e37099deb79c718b513)
@@ -252,5 +252,5 @@
 		preferred =
 			//*
-			kernelTLS().this_processor ? kernelTLS().this_processor->id * 4 : -1;
+			kernelTLS().this_processor ? kernelTLS().this_processor->cltr_id : -1;
 			/*/
 			thrd->link.preferred * 4;
@@ -330,5 +330,5 @@
 	#if defined(BIAS)
 		// Don't bother trying locally too much
-		preferred = kernelTLS().this_processor->id * 4;
+		preferred = kernelTLS().this_processor->cltr_id;
 	#endif
 
@@ -525,5 +525,8 @@
 
 // Grow the ready queue
-void ready_queue_grow  (struct cluster * cltr, int target) {
+unsigned ready_queue_grow(struct cluster * cltr, int target) {
+	unsigned preferred;
+	size_t ncount;
+
 	/* paranoid */ verify( ready_mutate_islocked() );
 	__cfadbg_print_safe(ready_queue, "Kernel : Growing ready queue\n");
@@ -540,5 +543,11 @@
 		// Find new count
 		// Make sure we always have atleast 1 list
-		size_t ncount = target >= 2 ? target * 4: 1;
+		if(target >= 2) {
+			ncount = target * 4;
+			preferred = ncount - 4;
+		} else {
+			ncount = 1;
+			preferred = 0;
+		}
 
 		// Allocate new array (uses realloc and memcpies the data)
@@ -575,4 +584,5 @@
 
 	/* paranoid */ verify( ready_mutate_islocked() );
+	return preferred;
 }
 
