First thing I would try is take out the gosub readtemp. Just for testing purpose. Then report back, tell us exactly how it is not precision. is it losing 1 second per min. is it gaining 1? what is the output you are seeing?

BTW, I am looking at the second program