Index: generic/src/debug/print.c
===================================================================
--- generic/src/debug/print.c	(revision ad45bde902facf893e06d19f51ac7e543fcf12f6)
+++ generic/src/debug/print.c	(revision 24f3874a4a82af6978a92f03e6b9dee9674ab008)
@@ -219,4 +219,5 @@
 	char *ptr = &d[PRINT_NUMBER_BUFFER_SIZE - 1];
 	int size = 0;
+	int number_size; /* size of plain number */
 	int written = 0;
 	char sgn;
@@ -237,4 +238,6 @@
 	}
 
+	number_size = size;
+	
 	/* Collect sum of all prefixes/signs/... to calculate padding and leading zeroes */
 	if (flags & __PRINTF_FLAG_PREFIX) {
@@ -273,13 +276,13 @@
 	if (flags & __PRINTF_FLAG_ZEROPADDED) {
 		if ((precision == 0) && (width > size)) {
-			precision = width - size;
+			precision = width - size + number_size;
 		}
 	}
 
 	/* print leading spaces */
-	if (size > precision) /* We must print the whole number,  not only a part */
-		precision = size;
-
-	width -= precision;
+	if (number_size > precision) /* We must print whole number not only a part */
+		precision = number_size;
+
+	width -= precision + size - number_size;
 	
 	if (!(flags & __PRINTF_FLAG_LEFTALIGNED)) {
@@ -326,5 +329,5 @@
 
 	/* print leading zeroes */
-	precision -= size;
+	precision -= number_size;
 	while (precision-- > 0) { 	
 		putchar('0');	
