diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 498f73a..e4b4b5b 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -435,6 +435,17 @@
                 self.assertEqual(value.__format__(format_spec),
                                  float(value).__format__(format_spec))
 
+        # Issue 6902
+        test(123456, "0<20", '12345600000000000000')
+        test(123456, "1<20", '12345611111111111111')
+        test(123456, "*<20", '123456**************')
+        test(123456, "0>20", '00000000000000123456')
+        test(123456, "1>20", '11111111111111123456')
+        test(123456, "*>20", '**************123456')
+        test(123456, "0=20", '00000000000000123456')
+        test(123456, "1=20", '11111111111111123456')
+        test(123456, "*=20", '**************123456')
+
     def test_long__format__(self):
         def test(i, format_spec, result):
             # make sure we're not accidentally checking ints
@@ -532,6 +543,16 @@
             for value in [0L, 1L, -1L, 100L, -100L, 1234567890L, -1234567890L]:
                 self.assertEqual(value.__format__(format_spec),
                                  float(value).__format__(format_spec))
+        # Issue 6902
+        test(123456L, "0<20", '12345600000000000000')
+        test(123456L, "1<20", '12345611111111111111')
+        test(123456L, "*<20", '123456**************')
+        test(123456L, "0>20", '00000000000000123456')
+        test(123456L, "1>20", '11111111111111123456')
+        test(123456L, "*>20", '**************123456')
+        test(123456L, "0=20", '00000000000000123456')
+        test(123456L, "1=20", '11111111111111123456')
+        test(123456L, "*=20", '**************123456')
 
     @run_with_locale('LC_NUMERIC', 'en_US.UTF8')
     def test_float__format__locale(self):
@@ -689,6 +710,17 @@
         self.assertRaises(ValueError, format, 0.0, '#')
         self.assertRaises(ValueError, format, 0.0, '#20f')
 
+        # Issue 6902
+        test(12345.6, "0<20", '12345.60000000000000')
+        test(12345.6, "1<20", '12345.61111111111111')
+        test(12345.6, "*<20", '12345.6*************')
+        test(12345.6, "0>20", '000000000000012345.6')
+        test(12345.6, "1>20", '111111111111112345.6')
+        test(12345.6, "*>20", '*************12345.6')
+        test(12345.6, "0=20", '000000000000012345.6')
+        test(12345.6, "1=20", '111111111111112345.6')
+        test(12345.6, "*=20", '*************12345.6')
+
     def test_format_spec_errors(self):
         # int, float, and string all share the same format spec
         # mini-language parser.
diff --git a/Misc/NEWS b/Misc/NEWS
index 89af2a4..872affe 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #6902: Fix problem with built-in types format incorrectly with
+  0 padding.
+
 - Issue #2560: remove an unnecessary 'for' loop from my_fgets() in
   Parser/myreadline.c.
 
diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h
index 1bd7acb..a807b97 100644
--- a/Objects/stringlib/formatter.h
+++ b/Objects/stringlib/formatter.h
@@ -151,10 +151,10 @@
     printf("internal format spec: align %d\n", format->align);
     printf("internal format spec: alternate %d\n", format->alternate);
     printf("internal format spec: sign %d\n", format->sign);
-    printf("internal format spec: width %d\n", format->width);
+    printf("internal format spec: width %zd\n", format->width);
     printf("internal format spec: thousands_separators %d\n",
            format->thousands_separators);
-    printf("internal format spec: precision %d\n", format->precision);
+    printf("internal format spec: precision %zd\n", format->precision);
     printf("internal format spec: type %c\n", format->type);
     printf("\n");
 }
@@ -181,6 +181,7 @@
        the input string */
 
     Py_ssize_t consumed;
+    int align_specified = 0;
 
     format->fill_char = '\0';
     format->align = default_align;
@@ -196,10 +197,12 @@
     if (end-ptr >= 2 && is_alignment_token(ptr[1])) {
         format->align = ptr[1];
         format->fill_char = ptr[0];
+        align_specified = 1;
         ptr += 2;
     }
     else if (end-ptr >= 1 && is_alignment_token(ptr[0])) {
         format->align = ptr[0];
+        align_specified = 1;
         ++ptr;
     }
 
@@ -219,7 +222,7 @@
     /* The special case for 0-padding (backwards compat) */
     if (format->fill_char == '\0' && end-ptr >= 1 && ptr[0] == '0') {
         format->fill_char = '0';
-        if (format->align == '\0') {
+        if (!align_specified) {
             format->align = '=';
         }
         ++ptr;
@@ -495,7 +498,7 @@
 
     /* min_width can go negative, that's okay. format->width == -1 means
        we don't care. */
-    if (format->fill_char == '0')
+    if (format->fill_char == '0' && format->align == '=')
         spec->n_min_width = format->width - n_non_digit_non_padding;
     else
         spec->n_min_width = 0;
