diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 90c969987fd410a022bb3a7d119f3fefd9fee369..397ef637100353feb5917044b98f01d9a85d51df 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -2468,7 +2468,23 @@ void HWR_Subsector(size_t num)
 
 	if (gr_frontsector->ffloors)
 	{
-		if (gr_frontsector->moved)
+		boolean anyMoved = gr_frontsector->moved;
+
+		if (anyMoved == false)
+		{
+			for (rover = gr_frontsector->ffloors; rover; rover = rover->next)
+			{
+				sector_t *controlSec = &sectors[rover->secnum];
+
+				if (controlSec->moved == true)
+				{
+					anyMoved = true;
+					break;
+				}
+			}
+		}
+
+		if (anyMoved == true)
 		{
 			gr_frontsector->numlights = sub->sector->numlights = 0;
 			R_Prep3DFloors(gr_frontsector);