diff -r 58d6543a151f dwm.c
--- a/dwm.c	Wed Oct 31 12:51:33 2007 +0100
+++ b/dwm.c	Wed Oct 31 13:17:44 2007 +0100
@@ -1213,11 +1213,11 @@ void
 void
 resizemouse(Client *c) {
 	int ocx, ocy;
-	int nw, nh;
+	int nw, nh, nx, ny;
 	XEvent ev;
 
-	ocx = c->x;
-	ocy = c->y;
+	nx = ocx = c->x;
+	ny = ocy = c->y;
 	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
 			None, cursor[CurResize], CurrentTime) != GrabSuccess)
 		return;
@@ -1239,11 +1239,11 @@ resizemouse(Client *c) {
 			break;
 		case MotionNotify:
 			XSync(dpy, False);
-			if((nw = ev.xmotion.x - ocx - 2 * c->border + 1) <= 0)
-				nw = 1;
-			if((nh = ev.xmotion.y - ocy - 2 * c->border + 1) <= 0)
-				nh = 1;
-			resize(c, c->x, c->y, nw, nh, True);
+			nx = ev.xmotion.x < ocx ? ev.xmotion.x : ocx;
+			ny = ev.xmotion.y < ocy ? ev.xmotion.y : ocy;
+			nw = abs(ev.xmotion.x - ocx - 2 * c->border) + 1;
+			nh = abs(ev.xmotion.y - ocy - 2 * c->border) + 1;
+			resize(c, nx, ny, nw, nh, True);
 			break;
 		}
 	}
