diff --git a/mods/ITEMS/REDSTONE/mesecons/services.lua b/mods/ITEMS/REDSTONE/mesecons/services.lua
index 7d1fce2d8..d13c6091e 100644
--- a/mods/ITEMS/REDSTONE/mesecons/services.lua
+++ b/mods/ITEMS/REDSTONE/mesecons/services.lua
@@ -21,7 +21,13 @@ function mesecon.on_placenode(pos, node)
 			end
 			mesecon.receptor_on (pos, mesecon.conductor_get_rules(node))
 		elseif mesecon.is_conductor_on(node) then
-			minetest.swap_node(pos, {name = mesecon.get_conductor_off(node)})
+			local offstate = mesecon.get_conductor_off(node)
+			if type(offstate) == "function" then
+				local res = offstate(pos, node)
+				core.swap_node(pos, {name = res[1], param2 = res[2]})
+			else
+				core.swap_node(pos, {name = offstate})
+			end
 		end
 	end