To read the temperature register data you can ignore the four most significant bits and treat the remaining 12-bits as a regular two's complement value with a resolution of 0.0625 instead of separating the register value into int and frac.
For example
TEMPERATURE REGISTER = 0xfff8
Binary format: 1111 1111 1111 1000
drop 4 MSBs: 1111 1111 1000 = (-2048+2040) * 0.0625 = -0.5°C
TEMPERATURE REGISTER = 0xff5e
Binary format: 1111 1111 0101 1000
drop 4 MSBs: 1111 1111 1000 = (-2048+1886) * 0.0625 = -10.125°C