diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h
index b964435..d8cb171 100644
--- a/Objects/stringlib/formatter.h
+++ b/Objects/stringlib/formatter.h
@@ -741,10 +741,6 @@
     /* first, do the conversion as 8-bit chars, using the platform's
        snprintf.  then, if needed, convert to unicode. */
 
-    /* 'F' is the same as 'f', per the PEP */
-    if (type == 'F')
-        type = 'f';
-
     x = PyFloat_AsDouble(value);
 
     if (x == -1.0 && PyErr_Occurred())
@@ -758,8 +754,12 @@
 
     if (precision < 0)
         precision = 6;
-    if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
-        type = 'g';
+    if ((type == 'f' || type == 'F') && (fabs(x) / 1e25) >= 1e25) {
+	if (type == 'f')
+	    type = 'g';
+	else
+	    type = 'G';
+    }
 
     /* cast "type", because if we're in unicode we need to pass a
        8-bit char.  this is safe, because we've restricted what "type"
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 793cc88..b161c8c 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -4320,8 +4320,12 @@
 	}
 	if (prec < 0)
 		prec = 6;
-	if (type == 'f' && fabs(x)/1e25 >= 1e25)
-		type = 'g';
+	if ((type == 'f' || type == 'F') && (fabs(x) / 1e25) >= 1e25) {
+		if (type == 'f')
+			type = 'g';
+		else
+			type = 'G';
+	}
 	/* Worst case length calc to ensure no buffer overrun:
 
 	   'g' formats:
@@ -4340,7 +4344,8 @@
 	*/
 	if (((type == 'g' || type == 'G') &&
               buflen <= (size_t)10 + (size_t)prec) ||
-	    (type == 'f' && buflen <= (size_t)53 + (size_t)prec)) {
+	    ((type == 'f' || type == 'F') &&
+	      buflen <= (size_t)53 + (size_t)prec)) {
 		PyErr_SetString(PyExc_OverflowError,
 			"formatted float is too long (precision too large?)");
 		return -1;
@@ -4910,8 +4915,6 @@
 			case 'F':
 			case 'g':
 			case 'G':
-				if (c == 'F')
-					c = 'f';
 				pbuf = formatbuf;
 				len = formatfloat(pbuf, sizeof(formatbuf),
 						  flags, prec, c, v);
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index a62e929..a885ff0 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -8191,8 +8191,12 @@
 	return -1;
     if (prec < 0)
 	prec = 6;
-    if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
-	type = 'g';
+    if ((type == 'f' || type == 'F') && (fabs(x) / 1e25) >= 1e25) {
+        if (type == 'f')
+            type = 'g';
+        else
+            type = 'G';
+    }
     /* Worst case length calc to ensure no buffer overrun:
 
        'g' formats:
@@ -8211,7 +8215,8 @@
     */
     if (((type == 'g' || type == 'G') && 
           buflen <= (size_t)10 + (size_t)prec) ||
-	(type == 'f' && buflen <= (size_t)53 + (size_t)prec)) {
+	((type == 'f' || type == 'F')  &&
+          buflen <= (size_t)53 + (size_t)prec)) {
 	PyErr_SetString(PyExc_OverflowError,
 			"formatted float is too long (precision too large?)");
 	return -1;
@@ -8704,8 +8709,6 @@
 	    case 'F':
 	    case 'g':
 	    case 'G':
-		if (c == 'F')
-			c = 'f';
 		pbuf = formatbuf;
 		len = formatfloat(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE),
 			flags, prec, c, v);
