diff --git a/presence/anyof.hpp b/presence/anyof.hpp
index efe3c79..91865b0 100644
--- a/presence/anyof.hpp
+++ b/presence/anyof.hpp
@@ -1,8 +1,11 @@
 #pragma once
 
 #include "fan.hpp"
+#include "power_state.hpp"
 #include "rpolicy.hpp"
 
+#include <sdeventplus/utility/timer.hpp>
+
 #include <functional>
 #include <vector>
 
@@ -62,8 +65,83 @@
     void monitor() override;
 
   private:
-    /** @brief All presence sensors in the redundancy set. */
-    std::vector<std::tuple<std::reference_wrapper<PresenceSensor>, bool>> state;
+    /**
+     * @brief Checks that the sensors contained in this policy all
+     *        agree on the presence value.  If they don't, then call
+     *        logConflict() on the sensors that don't think the fan
+     *        is present as they may be broken.
+     *
+     * This check will only happen when power is on.
+     */
+    void checkSensorConflicts();
+
+    /**
+     * @brief Callback function called after a post-poweron delay.
+     *
+     * The _powerOnDelayTimer is started when _powerState says the
+     * power is on to give fans a bit of time to spin up so tachs
+     * wouldn't be zero.  This is the callback function for that timer.
+     *
+     * It will call checkSensorConflicts().
+     */
+    void delayedAfterPowerOn();
+
+    /**
+     * @brief Says if power is on, though not until the post
+     *        power on delay is complete.
+     *
+     * @return bool - if power is on.
+     */
+    inline bool isPowerOn() const
+    {
+        return _powerOn;
+    }
+
+    /**
+     * @brief Called by the PowerState object when the power
+     *        state changes.
+     *
+     * When power changes to on:
+     *   - Clears the memory of previous sensor conflicts.
+     *   - Starts the post power on delay timer.
+     *
+     * @param[in] powerOn - If power is now on or off.
+     */
+    void powerStateChanged(bool powerOn);
+
+    static constexpr size_t sensorPos = 0;
+    static constexpr size_t presentPos = 1;
+    static constexpr size_t conflictPos = 2;
+
+    /**
+     * @brief All presence sensors in the redundancy set.
+     *
+     * Each entry contains:
+     *  - A reference to a PresenceSensor
+     *  - The current presence state
+     *  - If the sensors have logged conflicts in their answers.
+     */
+    std::vector<std::tuple<std::reference_wrapper<PresenceSensor>, bool, bool>>
+        state;
+
+    /**
+     * @brief Pointer to the PowerState object used to track power changes.
+     */
+    std::shared_ptr<PowerState> _powerState;
+
+    /**
+     * @brief Post power on delay timer, where the conflict checking code
+     *        doesn't consider power on until this timer expires.
+     *
+     * This gives fans a chance to start spinning before checking them.
+     */
+    sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic>
+        _powerOnDelayTimer;
+
+    /**
+     * @brief Current power state.
+     */
+    bool _powerOn;
 };
 
 } // namespace presence
