ok found it, possibly both or one.
firstly no cmcon = 7 so some of the comparators were turned on
and secondly, i forgot to connect mclr to 5V so it was just floating.

works like a dream.

thanks to bruce and everyone else that replied. youll probably be hearing from me again quite soon

heres the final code for anyone else stuck with temperature reading.

Thanks

' PicBasic Pro program to display result of a LM35CZ temp
' sensor with a 10-bit A/D conversion on LCD
'
' Connect analog input to channel-0 (RA0)

' Define LCD registers and bits
Pause 1000 ' to let LCD warm up
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
DEFINE LCD_COMMANDUS 2000 ' 2000 Command delay time in uS
DEFINE LCD_DATAUS 50 '50 Data delay time in uS

' Define ADCIN parameters
DEFINE ADC_BITS 10 ' Set number of bits in result
DEFINE ADC_CLOCK 3 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS

adval VAR WORD ' Create adval to store result
x VAR WORD
temp VAR WORD
decimal VAR WORD
cmcon = 7
TRISA = %0001001 ' Set PORTA to all input
'TRISD = 0
ADCON1 = %10000101 ' Set PORTA analog and right justify result
Low PORTE.2 ' LCD R/W line low (W)

Pause 500
LCDOut $FE,1,"Start"
Pause 1000 ' Display sign-on message to 2S ' Wait .5 second

loop:
adval = 0
For x = 1 TO 100
ADCIN 0, temp ' Read channel 0 to adval
adval = adval + temp
Next x
adval = adval/100
decimal = adval DIG 0
adval = adval/10
LCDOut $fe, 1 ' Clear LCD
LCDOut "Value: ", DEC adval,".",DEC decimal,"deg" ' Display the decimal value
'PORTD.1 = 1
Pause 100
'PORTD.1 = 0
GoTo loop ' Do it forever
End