--- fvwm/virtual.c.orig	Fri Sep 17 00:02:44 1999
+++ fvwm/virtual.c	Fri Sep 17 00:14:22 1999
@@ -678,21 +678,19 @@
 	  min = val[m+1];
 	  max = val[m];
 	}
-      if (desk < min)
+      if (val[0] == 0)
 	{
-          /*  Relative move outside of range, wrap around.  */
-	  if (val[0] < 0)
-	    desk = max;
-	  else
+	  if (desk < min)
 	    desk = min;
+	  if (desk > max)
+	    desk = max;
 	}
-      else if (desk > max)
+      else
 	{
-          /*  Relative move outside of range, wrap around.  */
-	  if (val[0] > 0)
-	    desk = min;
-	  else
-	    desk = max;
+	  while (desk < min)
+	    desk += max - min + 1;
+	  while (desk > max)
+	    desk -= max - min + 1;
 	}
     }
 

