diff --git a/src/main.cpp b/src/main.cpp
index 176cde639e33fcf206457b637f6c4befac3eb05c..ef720789427db392f0830f81b9183ec26a4a0f75 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -346,6 +346,8 @@ Doing now:
     - The server has to make sure the spawn point is not at the
 	  changing borders of a chunk
 * Add some kind of erosion and other stuff that now is possible
+* Make client to fetch stuff asynchronously
+  - Needs method SyncProcessData
 
 ======================================================================
 
diff --git a/src/map.cpp b/src/map.cpp
index adf3f5f8e34a5e00e47806b0e50a0ab26f09480d..7c0d19dbb5dbe834dd5068bf0e42e90975b6a69f 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -2309,10 +2309,8 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos,
 		Randomize some parameters
 	*/
 
-	// 0-100
-	// Usually little, sometimes huge
-	//u32 stone_obstacle_amount = myrand_range(0, myrand_range(0, 100));
-	u32 stone_obstacle_amount = myrand_range(0, myrand_range(20, 100));
+	u32 stone_obstacle_amount =
+			myrand_range(0, myrand_range(20, myrand_range(80,150)));
 
 	/*
 		Loop this part, it will make stuff look older and newer nicely
@@ -2492,14 +2490,18 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos,
 		
 		s16 route_y_min = 0;
 		//s16 route_y_max = ar.Y-1;
-		s16 route_y_max = stone_surface_max_y - of.Y;
+		s16 route_y_max = -of.Y + stone_surface_max_y + max_tunnel_diameter/2;
+		route_y_max = rangelim(route_y_max, 0, ar.Y-1);
 
 		if(bruise_surface)
 		{
 			/*// Minimum is at y=0
 			route_y_min = -of.Y - 0;*/
 			// Minimum is at y=max_tunnel_diameter/4
-			route_y_min = -of.Y + max_tunnel_diameter/4;
+			//route_y_min = -of.Y + max_tunnel_diameter/4;
+			//s16 min = -of.Y + max_tunnel_diameter/4;
+			s16 min = -of.Y + 0;
+			route_y_min = myrand_range(min, min + max_tunnel_diameter);
 			route_y_min = rangelim(route_y_min, 0, route_y_max);
 		}