diff --git a/test/meson.build b/test/meson.build
index 966334e..2513278 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -42,7 +42,8 @@
                               '../dbus/dbusutil.cpp'],
     'dbus_util_unittest': ['../dbus/dbusutil.cpp'],
     'json_parse_unittest': ['../buildjson/buildjson.cpp'],
-    'pid_json_unittest': ['../pid/buildjson.cpp'],
+    'pid_json_unittest': ['../pid/buildjson.cpp',
+                          '../util.cpp'],
     'pid_fancontroller_unittest': ['../pid/ec/pid.cpp',
                                    '../pid/ec/logging.cpp',
                                    '../pid/fancontroller.cpp',
diff --git a/test/pid_json_unittest.cpp b/test/pid_json_unittest.cpp
index c76849a..59db343 100644
--- a/test/pid_json_unittest.cpp
+++ b/test/pid_json_unittest.cpp
@@ -73,6 +73,71 @@
     EXPECT_DOUBLE_EQ(zoneConfig[1].minThermalOutput, 3000.0);
 }
 
+TEST(ZoneFromJson, marginZone)
+{
+    // Parse a valid configuration with one zone and one PID.
+    // This is a margin zone, and has both kinds of temperature
+    // sensors in it, absolute temperature and margin temperature.
+    // Tests that TempToMargin is parsed correctly.
+
+    std::map<int64_t, conf::PIDConf> pidConfig;
+    std::map<int64_t, conf::ZoneConfig> zoneConfig;
+
+    auto j2 = R"(
+      {
+        "zones" : [{
+          "id": 1,
+          "minThermalOutput": 3000.0,
+          "failsafePercent": 75.0,
+          "pids": [{
+            "name": "myPid",
+            "type": "margin",
+            "inputs": ["absolute0", "absolute1", "margin0", "margin1"],
+            "tempToMargin": [
+              85.0,
+              100.0
+            ],
+            "setpoint": 10.0,
+            "pid": {
+              "samplePeriod": 0.1,
+              "proportionalCoeff": 0.0,
+              "integralCoeff": 0.0,
+              "feedFwdOffsetCoeff": 0.0,
+              "feedFwdGainCoeff": 0.010,
+              "integralLimit_min": 0.0,
+              "integralLimit_max": 0.0,
+              "outLim_min": 30.0,
+              "outLim_max": 100.0,
+              "slewNeg": 0.0,
+              "slewPos": 0.0
+            }
+          }]
+        }]
+      }
+    )"_json;
+
+    std::tie(pidConfig, zoneConfig) = buildPIDsFromJson(j2);
+    EXPECT_EQ(pidConfig.size(), static_cast<u_int64_t>(1));
+    EXPECT_EQ(zoneConfig.size(), static_cast<u_int64_t>(1));
+
+    EXPECT_EQ(pidConfig[1]["myPid"].type, "margin");
+    EXPECT_DOUBLE_EQ(zoneConfig[1].minThermalOutput, 3000.0);
+
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[0].name, "absolute0");
+    EXPECT_DOUBLE_EQ(pidConfig[1]["myPid"].inputs[0].convertMarginZero, 85.0);
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[0].convertTempToMargin, true);
+
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[1].name, "absolute1");
+    EXPECT_DOUBLE_EQ(pidConfig[1]["myPid"].inputs[1].convertMarginZero, 100.0);
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[1].convertTempToMargin, true);
+
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[2].name, "margin0");
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[2].convertTempToMargin, false);
+
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[3].name, "margin1");
+    EXPECT_EQ(pidConfig[1]["myPid"].inputs[3].convertTempToMargin, false);
+}
+
 TEST(ZoneFromJson, oneZoneOnePidWithHysteresis)
 {
     // Parse a valid configuration with one zone and one PID and the PID uses
diff --git a/test/pid_thermalcontroller_unittest.cpp b/test/pid_thermalcontroller_unittest.cpp
index 6069154..7aee1e1 100644
--- a/test/pid_thermalcontroller_unittest.cpp
+++ b/test/pid_thermalcontroller_unittest.cpp
@@ -1,3 +1,4 @@
+#include "conf.hpp"
 #include "pid/ec/logging.hpp"
 #include "pid/ec/pid.hpp"
 #include "pid/thermalcontroller.hpp"
@@ -25,7 +26,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -41,7 +42,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {};
+    std::vector<pid_control::conf::SensorInput> inputs = {};
     double setpoint = 10.0;
     ec::pidinfo initial;
     std::unique_ptr<PIDController> p;
@@ -60,7 +61,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -79,7 +80,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -96,7 +97,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -117,7 +118,8 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0", "fleeting1"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"},
+                                                          {"fleeting1"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -138,7 +140,8 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0", "fleeting1"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"},
+                                                          {"fleeting1"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -159,7 +162,8 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0", "fleeting1"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"},
+                                                          {"fleeting1"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
 
@@ -173,6 +177,29 @@
     EXPECT_EQ(15.0, p->inputProc());
 }
 
+TEST(ThermalControllerTest, InputProc_MultipleInputsTempToMargin)
+{
+    // This test verifies inputProc behaves as expected with multiple margin
+    // inputs and TempToMargin in use.
+
+    ZoneMock z;
+
+    std::vector<pid_control::conf::SensorInput> inputs = {
+        {"absolute0", 85.0, true}, {"margin1"}};
+    double setpoint = 10.0;
+    ec::pidinfo initial;
+
+    std::unique_ptr<PIDController> p = ThermalController::createThermalPid(
+        &z, "therm1", inputs, setpoint, initial, ThermalType::margin);
+    EXPECT_FALSE(p == nullptr);
+
+    EXPECT_CALL(z, getCachedValue(StrEq("absolute0"))).WillOnce(Return(82.0));
+    EXPECT_CALL(z, getCachedValue(StrEq("margin1"))).WillOnce(Return(5.0));
+
+    // 82 degrees temp, 85 degrees Tjmax => 3 degrees of safety margin
+    EXPECT_EQ(3.0, p->inputProc());
+}
+
 TEST(ThermalControllerTest, NegHysteresis_BehavesAsExpected)
 {
     // This test verifies Negative hysteresis behaves as expected by
@@ -181,7 +208,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
     initial.negativeHysteresis = 4.0;
@@ -214,7 +241,7 @@
 
     ZoneMock z;
 
-    std::vector<std::string> inputs = {"fleeting0"};
+    std::vector<pid_control::conf::SensorInput> inputs = {{"fleeting0"}};
     double setpoint = 10.0;
     ec::pidinfo initial;
     initial.positiveHysteresis = 5.0;
