- size_t prec_pads = ( status->prec > status->current ) ? ( status->prec - status->current ) : 0;
- if ( ! ( status->flags & ( E_minus | E_zero ) ) )
+ const char * digits = (status->flags & E_lower) ?
+ _PDCLIB_digits : _PDCLIB_Xdigits;
+ uintmax_t remaining = value;
+ if(status->prec != 0 || remaining != 0) do {
+ uintmax_t digit = remaining % status->base;
+ remaining /= status->base;
+
+ outend[-++written] = digits[digit];
+ } while(remaining != 0);
+ }
+
+ // Pad field out to the precision specification
+ while( (long) written < status->prec ) outend[-++written] = '0';
+
+ // If a field width specified, and zero padding was requested, then pad to
+ // the field width
+ unsigned padding = 0;
+ if ( ( ! ( status->flags & E_minus ) ) && ( status->flags & E_zero ) )