diff --git a/dirt.lua b/dirt.lua
index 7982145f2a8a1f1526c0b106200b67b4619fe185..3bb14ef1d642fb1e1a8fb701c10ce7eef73a6e85 100644
--- a/dirt.lua
+++ b/dirt.lua
@@ -156,6 +156,11 @@ local flower_spread = function(pos, node)
 
 	local num = #minetest.find_nodes_in_area_under_air(pos0, pos1, "group:flora")
 
+	-- stop flowers spreading too much just below top of map block
+	if minetest.find_node_near(pos, 2, "ignore") then
+		return
+	end
+
 	if num > 3
 	and node.name == "ethereal:crystalgrass" then