*** numeric.c.orig 2007-08-02 08:15:40.000000000 -0400 --- numeric.c 2007-08-12 18:27:50.000000000 -0400 *************** *** 899,905 **** { unsigned char *sp = data + size; size_t carry = 0; ! int i; while (n > 0) { i = n % 10; --- 899,905 ---- { unsigned char *sp = data + size; size_t carry = 0; ! int i, is; while (n > 0) { i = n % 10; *************** *** 914,924 **** } /* perform addition */ ! if ((*sp += i + carry) > '9') { carry = 1; ! *sp -= 10; } else { carry = 0; } } if (carry == 0) { --- 914,926 ---- } /* perform addition */ ! is = (*sp & 0x0F) + i + carry; ! if (is > 9) { carry = 1; ! *sp = '0' + (is % 10); } else { carry = 0; + *sp = '0' + is; } } if (carry == 0) {