diff --git a/Objects/classobject.c b/Objects/classobject.c
index 0661e81..1e6fdb6 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -619,9 +619,9 @@
 	object *func, *res;
 	long outcome;
 
-	if ((func = instance_getattr(self, "__len__")) == NULL) {
+	if ((func = instance_getattr(self, "__nonzero__")) == NULL) {
 		err_clear();
-		if ((func = instance_getattr(self, "__nonzero__")) == NULL) {
+		if ((func = instance_getattr(self, "__len__")) == NULL) {
 			err_clear();
 			/* Fall back to the default behavior:
 			   all instances are nonzero */
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 85fd58e..97c1303 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -616,6 +616,34 @@
 }
 
 static object *
+builtin_round(self, args)
+	object *self;
+	object *args;
+{
+	extern double floor PROTO((double));
+	extern double ceil PROTO((double));
+	double x;
+	double f;
+	int ndigits = 0;
+	int sign = 1;
+	int i;
+	if (!getargs(args, "d", &x)) {
+		err_clear();
+		if (!getargs(args, "(di)", &x, &ndigits))
+			return NULL;
+	}
+	f = 1.0;
+	for (i = ndigits; --i >= 0; )
+		f = f*10.0;
+	for (i = ndigits; ++i <= 0; )
+		f = f*0.1;
+	if (x >= 0.0)
+		return newfloatobject(floor(x*f + 0.5) / f);
+	else
+		return newfloatobject(ceil(x*f - 0.5) / f);
+}
+
+static object *
 builtin_str(self, v)
 	object *self;
 	object *v;
@@ -674,6 +702,7 @@
 	{"raw_input",	builtin_raw_input},
 	{"reload",	builtin_reload},
 	{"repr",	builtin_repr},
+	{"round",	builtin_round},
 	{"setattr",	builtin_setattr},
 	{"str",		builtin_str},
 	{"type",	builtin_type},
@@ -766,7 +795,7 @@
 	register object *w = *pw;
 	int res;
 
-	if (v->ob_type == w->ob_type) {
+	if (v->ob_type == w->ob_type && !is_instanceobject(v)) {
 		INCREF(v);
 		INCREF(w);
 		return 0;
