One thing to watch out for when reading a DS18s20 is that they slow down with colder temps

The max timeout they specify to do a temp conversion is 750ms. Reading data before that can result in corruption
Yr code has
OWOUT PortB.0, 1, [$55,$10,$BB,$40,$2C,$00,$08,$00,$F9, $44] ' match ROM & do temp conversion
pause 50
OWOUT PortB.0, 1, [$55,$10,$BB,$40,$2C,$00,$08,$00,$F9, $BE] ' match ROM & read scratchpad memory

thus you are only allowing 50ms.
Setting this higher, or using a loop to check for the "done" bit being set will probably stabilise it at the lower temps.