Correct wrong calculation of pow(0.0, 0.0, negative_number)
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 0a6aa48..74ef26e 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -367,12 +367,8 @@
 	iw = ((floatobject *)w)->ob_fval;
 	intw = (long)iw;
 	if (iw == intw) {
-		errno = 0;
-		ix = powi(iv, intw);
-	}
-	else {
 		/* Sort out special cases here instead of relying on pow() */
-		if (iw == 0.0) { 		/* x**0 is 1, even 0**0 */
+		if (intw == 0) { 		/* x**0 is 1, even 0**0 */
 		 	if ((object *)z!=None) {
 			 	ix=fmod(1.0, z->ob_fval);
 			 	if (ix!=0 && z->ob_fval<0) ix+=z->ob_fval;
@@ -380,6 +376,11 @@
 		 	else ix=1.0;
 	    		return newfloatobject(ix); 
 		}
+		errno = 0;
+		ix = powi(iv, intw);
+	}
+	else {
+		/* Sort out special cases here instead of relying on pow() */
 		if (iv == 0.0) {
 			if (iw < 0.0) {
 				err_setstr(ValueError, "0.0 to a negative power");