diff --git a/watchsyscall/wa_callbacks.c b/watchsyscall/wa_callbacks.c
index 63d3435d55ddd347693c08bbdd575cd3f8a87770..d2006763b2ad0b660c63057a1039943297712528 100644
--- a/watchsyscall/wa_callbacks.c
+++ b/watchsyscall/wa_callbacks.c
@@ -195,10 +195,16 @@ void zipr_post_allocate_watcher(int ret, reg_values_t rv)
 //	print_int(*(int*)rv.edx);
 //	print_str("\n");
 #endif
+
 	int start=*(int*)(rv.edx);
-	int end=start+rv.ebx;
+
+	// need to round up to nearest 4K!
+	//   orig code: int end = start + rv.ebx;  
+	int end = start + ((rv.ebx / PAGESIZE) * PAGESIZE);
+	if (rv.ebx % PAGESIZE > 0)
+		end += PAGESIZE; 
+	end--;
 	add_to_list(start,end);
-	
 }