Zero Fill 10 position field

Hi everyone, I am using shell scripting on a Unix SCO box. It calls a C program named zerofill. I do not know anything about C. I am having an issue with a hash total that should only be zero filled 10 positions but the record has 11 positions.
DEBUG RESULTS

+ nice -n -5 bc -l /tmp/fhash8395
FileHash=12010862188
+ nice -n -5 /u/APS/bin/zerofill 10 12010862188
FileHash=12010862188
+ nice -n -5 /u/APS/bin/zerofill 08 0000004
BatchCount=00000004
+ echo 90000040001340000000412010862188000030858737000000000000 � the 9 record has 11 positions instead of 10 This hash total should be 2010862188 dropping the leading 1.

This is the C code which I do not know how to read. Can anyone help to see if this is my issue? Thanks.

#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[]) {
        int size;
        if (argc != 3) usage(argv[0]);
        size = atoi(argv[1]);
        printf("%0*s",size,argv[2]);
}
usage(char *s) {
        fprintf(stderr,"usage: %s size string\n",s);
        exit(1);
}