diff --git a/pid/zone.cpp b/pid/zone.cpp
index 81425c3..f04a68d 100644
--- a/pid/zone.cpp
+++ b/pid/zone.cpp
@@ -76,7 +76,7 @@
     return _failSafePercent;
 }
 
-float PIDZone::getMinThermalRpmSetPt(void) const
+float PIDZone::getMinThermalRPMSetpoint(void) const
 {
     return _minThermalRpmSetPt;
 }
@@ -121,7 +121,7 @@
      * If the maximum RPM set-point output is below the minimum RPM
      * set-point, set it to the minimum.
      */
-    max = std::max(getMinThermalRpmSetPt(), max);
+    max = std::max(getMinThermalRPMSetpoint(), max);
 
 #ifdef __TUNING_LOGGING__
     /*
diff --git a/pid/zone.hpp b/pid/zone.hpp
index 37fcc77..32b6e22 100644
--- a/pid/zone.hpp
+++ b/pid/zone.hpp
@@ -66,7 +66,7 @@
     void addRPMSetPoint(float setpoint) override;
     void clearRPMSetPoints(void);
     float getFailSafePercent(void) const override;
-    float getMinThermalRpmSetPt(void) const;
+    float getMinThermalRPMSetpoint(void) const;
 
     Sensor* getSensor(const std::string& name) override;
     void determineMaxRPMRequest(void);
diff --git a/test/pid_zone_unittest.cpp b/test/pid_zone_unittest.cpp
index 82997b9..0b9aa9f 100644
--- a/test/pid_zone_unittest.cpp
+++ b/test/pid_zone_unittest.cpp
@@ -121,7 +121,7 @@
 TEST_F(PidZoneTest, RpmSetPoints_AddMaxClear_BehaveAsExpected)
 {
     // Tests addRPMSetPoint, clearRPMSetPoints, determineMaxRPMRequest
-    // and getMinThermalRpmSetPt.
+    // and getMinThermalRPMSetpoint.
 
     // At least one value must be above the minimum thermal setpoint used in
     // the constructor otherwise it'll choose that value
@@ -140,7 +140,7 @@
 
     // This will go through the RPM set point values and grab the maximum.
     zone->determineMaxRPMRequest();
-    EXPECT_EQ(zone->getMinThermalRpmSetPt(), zone->getMaxRPMRequest());
+    EXPECT_EQ(zone->getMinThermalRPMSetpoint(), zone->getMaxRPMRequest());
 }
 
 TEST_F(PidZoneTest, RpmSetPoints_AddBelowMinimum_BehavesAsExpected)
@@ -158,7 +158,7 @@
     zone->determineMaxRPMRequest();
 
     // Verifies the value returned in the minimal thermal rpm set point.
-    EXPECT_EQ(zone->getMinThermalRpmSetPt(), zone->getMaxRPMRequest());
+    EXPECT_EQ(zone->getMinThermalRPMSetpoint(), zone->getMaxRPMRequest());
 }
 
 TEST_F(PidZoneTest, GetFailSafePercent_ReturnsExpected)
