Doh! It just occurred to me that your 4 digit BCD number is probably "packed" into 16 bits (4 x 4 bit digits). In that case this should work: SendByte(((number >> 0) & 0x000f) + '0'); SendByte('0'); SendByte(((number >> 4) & 0x000f) + '0'); SendByte(((number >> 8) & 0x000f) + '0'); SendByte(((number >> 12) & 0x000f) + '0'); The shift right by 0 places for the first digit is obviously redundant, as is the AND by 0x000f for the 4th digit, but I like to keep things looking consistent so it's easier to see what it is intended. This should optimise quite nicely in Hi-Tech C, perhaps you can get away without some of the extra brackets too. -- Brent Brown, Electronic Design Solutions 16 English Street, Hamilton, New Zealand Ph/fax: +64 7 849 0069 Mobile/txt: 025 334 069 eMail: brent.brown@clear.net.nz -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body