diff --git a/eeschema/sch_text.cpp b/eeschema/sch_text.cpp
index 549433d6d9..7c6fb092d5 100644
--- a/eeschema/sch_text.cpp
+++ b/eeschema/sch_text.cpp
@@ -59,7 +59,10 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
 
     wxString suffix;
     wxString digits;
-    int      ii = name.Len() - 1;
+    wxString outputFormat;
+    wxString outputNumber;
+    int      ii     = name.Len() - 1;
+    int      dCount = 0;
 
     while( ii >= 0 && !wxIsdigit( name.GetChar( ii ) ) )
     {
@@ -71,6 +74,7 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
     {
         digits = name.GetChar( ii ) + digits;
         ii--;
+        dCount++;
     }
 
     if( digits.IsEmpty() )
@@ -87,7 +91,11 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
         if( number > -1 )
         {
             name.Remove( ii + 1 );
-            name << number << suffix;
+            //write out a format string with correct number of leading zeroes
+            outputFormat.Printf( "%%0%dd", dCount );
+            //write out the number using the format string
+            outputNumber.Printf( outputFormat, number );
+            name << outputNumber << suffix;
             return true;
         }
     }