diff --git a/rcuhashbash.c b/rcuhashbash.c
index 730423f..4a78431 100644
--- a/rcuhashbash.c
+++ b/rcuhashbash.c
@@ -27,6 +27,8 @@
 static int writers = -1; /* Number of writer tasks; defaults to online CPUs */
 static unsigned long buckets = 1024; /* Number of hash table buckets */
 static unsigned long entries = 4096; /* Number of entries initially added */
+static unsigned long reader_range = 0; /* Upper bound of reader range */
+static unsigned long writer_range = 0; /* Upper bound of writer range */
 
 module_param(reader_type, charp, 0444);
 MODULE_PARM_DESC(reader_type, "Hash table reader implementation");
@@ -40,6 +42,10 @@
 MODULE_PARM_DESC(buckets, "Number of hash buckets");
 module_param(entries, ulong, 0444);
 MODULE_PARM_DESC(entries, "Number of hash table entries");
+module_param(reader_range, ulong, 0444);
+MODULE_PARM_DESC(reader_range, "Upper bound of reader operating range (default 2*entries)");
+module_param(writer_range, ulong, 0444);
+MODULE_PARM_DESC(writer_range, "Upper bound of writer operating range (default 2*entries)");
 
 struct rcuhashbash_bucket {
 	struct hlist_head head;
@@ -140,7 +146,7 @@
 
 		cond_resched();
 
-		value = rcu_random(&rand) % (entries * 2);
+		value = rcu_random(&rand) % reader_range;
 
 		hlist_for_each_entry(entry, node, &hash_table[value % buckets].head, node)
 			if (entry->value == value)
@@ -171,7 +177,7 @@
 
 		cond_resched();
 
-		value = rcu_random(&rand) % (entries * 2);
+		value = rcu_random(&rand) % reader_range;
 
 		hlist_for_each_entry_rcu(entry, node, &hash_table[value % buckets].head, node)
 			if (entry->value == value)
@@ -202,7 +208,7 @@
 
 		cond_resched();
 
-		value = rcu_random(&rand) % (entries * 2);
+		value = rcu_random(&rand) % reader_range;
 
 		rcu_read_lock();
 		hlist_for_each_entry_rcu(entry, node, &hash_table[value % buckets].head, node)
@@ -235,7 +241,7 @@
 
 		cond_resched();
 
-		value = rcu_random(&rand) % (entries * 2);
+		value = rcu_random(&rand) % reader_range;
 		bucket = value % buckets;
 
 		if (ops->read_lock_bucket)
@@ -273,7 +279,7 @@
 
 		cond_resched();
 
-		value = rcu_random(&rand) % (entries * 2);
+		value = rcu_random(&rand) % reader_range;
 
 		do {
 			seq = read_seqcount_begin(&table_seqcount);
@@ -326,9 +332,9 @@
 
 		cond_resched();
 
-		src_value = rcu_random(&rand) % (entries * 2);
+		src_value = rcu_random(&rand) % writer_range;
 		src_bucket = src_value % buckets;
-		dst_value = rcu_random(&rand) % (entries * 2);
+		dst_value = rcu_random(&rand) % writer_range;
 		dst_bucket = dst_value % buckets;
 		same_bucket = src_bucket == dst_bucket;
 
@@ -435,9 +441,9 @@
 
 		cond_resched();
 
-		src_value = rcu_random(&rand) % (entries * 2);
+		src_value = rcu_random(&rand) % writer_range;
 		src_bucket = src_value % buckets;
-		dst_value = rcu_random(&rand) % (entries * 2);
+		dst_value = rcu_random(&rand) % writer_range;
 		dst_bucket = dst_value % buckets;
 		same_bucket = src_bucket == dst_bucket;
 
@@ -515,9 +521,9 @@
 
 		cond_resched();
 
-		src_value = rcu_random(&rand) % (entries * 2);
+		src_value = rcu_random(&rand) % writer_range;
 		src_bucket = src_value % buckets;
-		dst_value = rcu_random(&rand) % (entries * 2);
+		dst_value = rcu_random(&rand) % writer_range;
 		dst_bucket = dst_value % buckets;
 		same_bucket = src_bucket == dst_bucket;
 
@@ -978,11 +984,11 @@
 	}
 
 	printk(KERN_ALERT "rcuhashbash summary: readers=%d reader_type=%s writers=%d writer_type=%s\n"
-	       KERN_ALERT "rcuhashbash summary: buckets=%lu entries=%lu\n"
+	       KERN_ALERT "rcuhashbash summary: buckets=%lu entries=%lu reader_range=%lu writer_range=%lu\n"
 	       KERN_ALERT "rcuhashbash summary: writers: %llu moves, %llu dests in use, %llu misses\n"
 	       KERN_ALERT "rcuhashbash summary: readers: %llu hits, %llu misses\n",
 	       readers, reader_type, writers, writer_type,
-	       buckets, entries,
+	       buckets, entries, reader_range, writer_range,
 	       ws.moves, ws.dests_in_use, ws.misses,
 	       rs.hits, rs.misses);
 }
@@ -1074,6 +1080,11 @@
 		return -EINVAL;
 	}
 
+	if (reader_range == 0)
+		reader_range = 2*entries;
+	if (writer_range == 0)
+		writer_range = 2*entries;
+
 	entry_cache = KMEM_CACHE(rcuhashbash_entry, 0);
 	if (!entry_cache)
 		goto enomem;
