The issue is a Gauge32 cannot show a negative number, this is what the MIB has defined for this OID so the implementation is correct as far as MIB is concerned.
My expectation is its a handful lines of code to do this. If the approach is ok I can even create a PR for it. I'm not sure what the mechanics are of updating the MIB though.
lmTempSensorsValue OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The temperature of this sensor in mC.
This object has been deprecated in favor of
'lmTempSensorsTemperature(4), which can display
temperatures below 0 degrees Celcius."
::= { lmTempSensorsEntry 3 }
lmTempSensorsTemperature OBJECT-TYPE
SYNTAX Integer32
UNITS "mCel"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The temperature of this sensor in mCel."
::= { lmTempSensorsEntry 4 }
I changed the unit from mC to mCel to follow RFC8428 and currently, its reporting the temperature in milliCoulombs. That's a minor thing in any case.