This code works great and gives the correct temperature throughout the sensors range in both Fahrenheit and Celsius. The format is like this: TempC = 2250 = 22.50ºC, TempF = 7250 = 72.50ºF.

Code:
ReadDS18S20:
    owout sensor,1,[$CC, $44]                       ' Send Start Temperature Conversion command
    owout sensor,1,[$CC, $BE]                       ' Send Read Temperature command
    owin sensor,0,[STR dq\9]                        ' Retrieve all 9 bytes of data
    RawTemp.Byte0 = dq[0]
    RawTemp.byte1 = dq[1]
    if RawTemp.8 = 1 then                           ' Check if temperature is a negative reading
        SignC = Negative
        RawTemp.lowbyte = RawTemp.lowbyte ^ 255     ' Invert data
        else
        SignC = Positive
	endif
    dummy = RawTemp.0                               ' Store the half degree indicator bit
    TempC = ((RawTemp.lowbyte) >> 1) * 100          ' Divide raw data by 2 to give real temperature
    TempC = TempC + (dummy * 50)                    ' Add the half degree is present
    if SignC = Negative then                        ' Only proceed if temperature is negative
        if TempC => 1770 then   
            SignF = Negative
            TempF = (TempC + 5000) * 900
            TempF = div32 500
            TempF = TempF - 12200
            return 
            else
            SignF = Positive
            TempF = (TempC + 5000) * 900
            TempF = div32 500
            TempF = 12200 - TempF
            return 
        endif    
    endif
    SignF = Positive
    TempF = TempC * 18 / 10 + 3200
    return