Be more careful with negative reference counts.
diff --git a/Include/object.h b/Include/object.h
index 4656173..7147339 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -56,7 +56,7 @@
 #ifdef TRACE_REFS
 #define OB_HEAD \
 	struct _object *_ob_next, *_ob_prev; \
-	unsigned int ob_refcnt; \
+	int ob_refcnt; \
 	struct _typeobject *ob_type;
 #define OB_HEAD_INIT(type) 0, 0, 1, type,
 #else
@@ -200,7 +200,7 @@
 #endif
 #define INCREF(op) (ref_total++, (op)->ob_refcnt++)
 #define DECREF(op) \
-	if (--ref_total, --(op)->ob_refcnt != 0) \
+	if (--ref_total, --(op)->ob_refcnt > 0) \
 		; \
 	else \
 		DELREF(op)
@@ -208,7 +208,7 @@
 #define NEWREF(op) ((op)->ob_refcnt = 1)
 #define INCREF(op) ((op)->ob_refcnt++)
 #define DECREF(op) \
-	if (--(op)->ob_refcnt != 0) \
+	if (--(op)->ob_refcnt > 0) \
 		; \
 	else \
 		DELREF(op)