diff --git a/control/json/zone.cpp b/control/json/zone.cpp
index d59fe26..7966ae1 100644
--- a/control/json/zone.cpp
+++ b/control/json/zone.cpp
@@ -173,21 +173,6 @@
     }
 }
 
-void Zone::setActiveAllow(const std::string& ident, bool isActiveAllow)
-{
-    _active[ident] = isActiveAllow;
-    if (!isActiveAllow)
-    {
-        _isActive = false;
-    }
-    else
-    {
-        // Check all entries are set to allow active fan control
-        auto actPred = [](const auto& entry) { return entry.second; };
-        _isActive = std::all_of(_active.begin(), _active.end(), actPred);
-    }
-}
-
 void Zone::setFloor(uint64_t target)
 {
     // Check all entries are set to allow floor to be set
diff --git a/control/json/zone.hpp b/control/json/zone.hpp
index d6ee3e2..ddc17c1 100644
--- a/control/json/zone.hpp
+++ b/control/json/zone.hpp
@@ -228,14 +228,6 @@
     void setTargetHold(const std::string& ident, uint64_t target, bool hold);
 
     /**
-     * @brief Sets the automatic fan control allowed active state
-     *
-     * @param[in] ident - An identifier that affects the active state
-     * @param[in] isActiveAllow - Active state according to group
-     */
-    void setActiveAllow(const std::string& ident, bool isActiveAllow);
-
-    /**
      * @brief Set the floor to the given target and increase target to the floor
      * when the target is below the floor value when floor changes are allowed.
      *
@@ -443,9 +435,6 @@
     /* The target decrease timer object */
     Timer _decTimer;
 
-    /* Map of active fan control allowed by a string identifier */
-    std::map<std::string, bool> _active;
-
     /* Map of target holds by a string identifier */
     std::unordered_map<std::string, uint64_t> _holds;
 
