Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision 2a3d44698a8f41614824b5eaaf857999a33d334b)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision 983edfd198b5a501a1d03a410f240615c814c477)
@@ -484,7 +484,7 @@
 			verifyf((empty.mask[word] & (1ull << bit)) != 0, "After set %llu:%llu (%u), %llx & %llx", word, bit, i, empty.mask[word], (1ull << bit));
 		}
-		verify(empty.count <= (int)list.count);
-		verify( list.data[i].last_id == kernelTLS.this_processor->id );
-		verify( list.data[i].lock );
+		verifyf( empty.count <= list.count, "Non-empty count (%zu) exceeds actual count (%zu)\n", empty.count, list.count );
+		verifyf( list.data[i].last_id == kernelTLS.this_processor->id, "Expected last processor to lock queue %u to be %u, was %u\n", i, list.data[i].last_id, kernelTLS.this_processor->id );
+		verifyf( list.data[i].lock, "List %u is not locked\n", i );
 
 		// Unlock and return
@@ -768,9 +768,15 @@
 			__cfa_readyQ_mask_t clears = ~0;
 
-			for( b ; fbit ~ lbit ) {
+			for( b ; lbit ~ fbit ) {
 				clears ^= 1 << b;
 			}
 
 			empty.mask[fword] &= clears;
+
+
+			empty.count = 0;
+			for( i ; lword ) {
+				empty.count += __builtin_popcountl(empty.mask[i]);
+			}
 		}
 
