diff --git a/sensor/mcp9808/mcp9808.go b/sensor/mcp9808/mcp9808.go index 66d9291..53b68a2 100644 --- a/sensor/mcp9808/mcp9808.go +++ b/sensor/mcp9808/mcp9808.go @@ -322,7 +322,11 @@ func convertWordToTempC(temp uint16) float64 { } func (d *MCP9808) setTemp(reg byte, newTemp float64) error { - return d.Bus.WriteWordToReg(address, reg, uint16(newTemp*16)&0x1fff) + rounder := 2.0 + if newTemp < 0 { + rounder = 0.0 + } + return d.Bus.WriteWordToReg(address, reg, uint16(newTemp*16+rounder)&0x1ffc) } // AmbientTemp reads the current sensor value along with the flags denoting what boundaries the