diff -u -r angband-291/src/types.h angband/src/types.h
--- angband-291/src/types.h	Tue Jul 25 20:57:50 2000
+++ angband/src/types.h	Thu Nov  2 20:24:14 2000
@@ -992,7 +992,7 @@
 	s16b wy;				/* Dungeon panel */
 	s16b wx;				/* Dungeon panel */
 
-	s16b total_weight;		/* Total weight being carried */
+	s32b total_weight;		/* Total weight being carried */
 
 	s16b inven_cnt;			/* Number of items in inventory */
 	s16b equip_cnt;			/* Number of items in equipment */
diff -u -r angband-291/src/wizard2.c angband/src/wizard2.c
--- angband-291/src/wizard2.c	Tue Jul 25 20:57:50 2000
+++ angband/src/wizard2.c	Thu Nov  2 20:44:38 2000
@@ -844,11 +844,11 @@
 /*
  * Change the quantity of a the item
  */
-static void wiz_quantity_item(object_type *o_ptr)
+static void wiz_quantity_item(object_type *o_ptr, bool carried)
 {
 	int tmp_int;
 
-	char tmp_val[100];
+	char tmp_val[3];
 
 
 	/* Never duplicate artifacts */
@@ -868,6 +868,16 @@
 		if (tmp_int < 1) tmp_int = 1;
 		if (tmp_int > 99) tmp_int = 99;
 
+		/* Adjust total weight being carried */
+		if (carried)
+		{
+			/* Remove the weight of the old number of objects */
+			p_ptr->total_weight -= (o_ptr->number * o_ptr->weight);
+
+			/* Add the weight of the new number of objects */
+			p_ptr->total_weight += (tmp_int * o_ptr->weight);
+		}
+
 		/* Accept modifications */
 		o_ptr->number = tmp_int;
 	}
@@ -960,7 +970,8 @@
 
 		if (ch == 'q' || ch == 'Q')
 		{
-			wiz_quantity_item(i_ptr);
+			bool carried = (item >= 0) ? TRUE : FALSE;
+			wiz_quantity_item(i_ptr, carried);
 		}
 	}
 

