Are you saying that with only one channel, you can get the full range whereas selecting multiple channels results in a different output?
I agree with Nigel that you have to give the converter sufficent time to acquire the selected channel. The F877 datasheet gives an extensive discussion about it. This means that there must be a delay between channel selection and the start of A/D conversion.
I would also add that you can change channels to allow the next channel to be acquired while an A/D conversion is in progress. That is, after the "BSF ADCON0,GO" or equivalent C language instruction, you can change channels on the next instruction. Channel selection uses the same ADCON0 register and so you have to make sure not to inadvertently clear "ADCON0,GO".