diff --git a/monitor/fan.cpp b/monitor/fan.cpp
index 852d2ba..7d657a0 100644
--- a/monitor/fan.cpp
+++ b/monitor/fan.cpp
@@ -44,10 +44,9 @@
                                          *this,
                                          std::get<sensorNameField>(s),
                                          std::get<hasTargetField>(s),
-                                         std::get<timeoutField>(def)));
-
+                                         std::get<timeoutField>(def),
+                                         events));
     }
-
 }
 
 
@@ -123,6 +122,16 @@
 }
 
 
+void Fan::timerExpired(TachSensor& sensor)
+{
+    sensor.setFunctional(false);
+
+    //If the fan is currently functional, but too many
+    //contained sensors are now nonfunctional, update
+    //the whole fan nonfunctional.
+    //TODO
+}
+
 }
 }
 }
diff --git a/monitor/fan.hpp b/monitor/fan.hpp
index d79ae31..9aeccd2 100644
--- a/monitor/fan.hpp
+++ b/monitor/fan.hpp
@@ -70,7 +70,7 @@
          * @brief Callback function for when an input sensor changes
          *
          * Starts a timer, where if it expires then the sensor
-         * was slow for too long and can be considered not functional.
+         * was out of range for too long and can be considered not functional.
          */
         void tachChanged(TachSensor& sensor);
 
@@ -79,6 +79,18 @@
          */
         void tachChanged();
 
+        /**
+         * @brief The callback function for the timer
+         *
+         * Sets the sensor to not functional.
+         * If enough sensors are now not functional,
+         * updates the functional status of the whole
+         * fan in the inventory.
+         *
+         * @param[in] sensor - the sensor whose timer expired
+         */
+        void timerExpired(TachSensor& sensor);
+
     private:
 
         /**
diff --git a/monitor/tach_sensor.cpp b/monitor/tach_sensor.cpp
index c991bb6..806eed7 100644
--- a/monitor/tach_sensor.cpp
+++ b/monitor/tach_sensor.cpp
@@ -84,13 +84,14 @@
                        Fan& fan,
                        const std::string& id,
                        bool hasTarget,
-                       size_t timeout) :
-
+                       size_t timeout,
+                       std::shared_ptr<sd_event>& events) :
     _bus(bus),
     _fan(fan),
     _name(FAN_SENSOR_PATH + id),
     _hasTarget(hasTarget),
-    _timeout(timeout)
+    _timeout(timeout),
+    _timer(events, [this, &fan](){ fan.timerExpired(*this); })
 {
     auto service = getService();
 
@@ -232,6 +233,14 @@
 }
 
 
+std::chrono::microseconds TachSensor::getTimeout()
+{
+    using namespace std::chrono;
+
+    return duration_cast<microseconds>(seconds(_timeout));
+}
+
+
 }
 }
 }
diff --git a/monitor/tach_sensor.hpp b/monitor/tach_sensor.hpp
index 003763c..7a65b64 100644
--- a/monitor/tach_sensor.hpp
+++ b/monitor/tach_sensor.hpp
@@ -3,6 +3,7 @@
 #include <chrono>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server.hpp>
+#include "timer.hpp"
 
 namespace phosphor
 {
@@ -46,12 +47,14 @@
          * @param[in] hasTarget - if the sensor supports
          *                        setting the speed
          * @param[in] timeout - Normal timeout value to use
+         * @param[in] events - sd_event pointer
          */
         TachSensor(sdbusplus::bus::bus& bus,
                    Fan& fan,
                    const std::string& id,
                    bool hasTarget,
-                   size_t timeout);
+                   size_t timeout,
+                   std::shared_ptr<sd_event>& events);
 
         /**
          * @brief Returns the target speed value
@@ -94,6 +97,19 @@
             _functional = functional;
         }
 
+        /**
+         * Returns the timer object for this sensor
+         */
+        inline phosphor::fan::util::Timer& getTimer()
+        {
+            return _timer;
+        }
+
+        /**
+         * @brief Returns the timeout value to use for the sensor
+         */
+        std::chrono::microseconds getTimeout();
+
     private:
 
         /**
@@ -197,6 +213,11 @@
         const size_t _timeout;
 
         /**
+         * The timer object
+         */
+        phosphor::fan::util::Timer _timer;
+
+        /**
          * @brief The match object for the Value properties changed signal
          */
         std::unique_ptr<sdbusplus::server::match::match> tachSignal;
