I want to scale my ADC output to read the true value using Hi tech C compiler. I am using the +ve supply as Vref therefore I need to scale by a factor of 4.83. The ADC registers have been put together to form an unsigned integer. I am now multiplying by 483 and then dividing by 100 as follows. t is a long integer ADC_VALUE = ADRESL; /* Getting HSB of CCP1 */ ADC_VALUE += (ADRESH << 8); /* Getting LSB of CCP1 */ t=(ADC_VALUE*483)/100; ADC_VALUE=t; Now my problem is typecasting (I believe) because I am mixing long and short integers. Any ideas in how to overcome this. By the way ADC_VALUE is passed to another procedure which converts from binary to bcd in a 16 bit word so it is not as simple as declaring it as a long integer. Ian --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.380 / Virus Database: 213 - Release Date: 24/07/02 -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu