diff --git a/analyzer/callout.hpp b/analyzer/callout.hpp
index b4f7912..0ec3241 100644
--- a/analyzer/callout.hpp
+++ b/analyzer/callout.hpp
@@ -158,6 +158,9 @@
     /** Oscillator reference clock 1. */
     static const ClockType OSC_REF_CLOCK_1;
 
+    /** Time of Day (TOD) clock. */
+    static const ClockType TOD_CLOCK;
+
   private:
     /**
      * @brief Constructor from components.
@@ -180,6 +183,7 @@
 
 inline const ClockType ClockType::OSC_REF_CLOCK_0{"OSC_REF_CLOCK_0"};
 inline const ClockType ClockType::OSC_REF_CLOCK_1{"OSC_REF_CLOCK_1"};
+inline const ClockType ClockType::TOD_CLOCK{"TOD_CLOCK"};
 
 /** @brief Container class for part callout service actions. */
 class PartType
diff --git a/analyzer/meson.build b/analyzer/meson.build
index 3cf063e..c849130 100644
--- a/analyzer/meson.build
+++ b/analyzer/meson.build
@@ -12,6 +12,7 @@
 
 plugins_src = files(
     'plugins/p10-plugins.cpp',
+    'plugins/p10-tod-plugins.cpp',
 )
 
 # Library dependencies.
diff --git a/analyzer/plugins/p10-plugins.cpp b/analyzer/plugins/p10-plugins.cpp
index 3e61135..a3ac1ca 100644
--- a/analyzer/plugins/p10-plugins.cpp
+++ b/analyzer/plugins/p10-plugins.cpp
@@ -108,14 +108,6 @@
     }
 }
 
-/**
- * @brief Handles TOD step check fault attentions.
- */
-void tod_step_check_fault(unsigned int, const libhei::Chip&, ServiceData&)
-{
-    // TODO
-}
-
 } // namespace P10
 
 PLUGIN_DEFINE_NS(P10_10, P10, pll_unlock);
@@ -124,7 +116,4 @@
 PLUGIN_DEFINE_NS(P10_10, P10, lpc_timeout);
 PLUGIN_DEFINE_NS(P10_20, P10, lpc_timeout);
 
-PLUGIN_DEFINE_NS(P10_10, P10, tod_step_check_fault);
-PLUGIN_DEFINE_NS(P10_20, P10, tod_step_check_fault);
-
 } // namespace analyzer
diff --git a/analyzer/plugins/p10-tod-plugins.cpp b/analyzer/plugins/p10-tod-plugins.cpp
new file mode 100644
index 0000000..84a8cfe
--- /dev/null
+++ b/analyzer/plugins/p10-tod-plugins.cpp
@@ -0,0 +1,34 @@
+
+#include <analyzer/plugins/plugin.hpp>
+#include <util/pdbg.hpp>
+#include <util/trace.hpp>
+
+namespace analyzer
+{
+
+namespace P10
+{
+
+/**
+ * @brief Handles TOD step check fault attentions.
+ */
+void tod_step_check_fault(unsigned int, const libhei::Chip& i_chip,
+                          ServiceData& io_servData)
+{
+    // TODO: The TOD step check fault analysis is complicated. It requires
+    //       analysis of multiple status registers on all processors in the
+    //       system. Until that support is available, call out the TOD clock and
+    //       the processor reporting the attention.
+    trace::err("Warning: TOD step check fault handling not fully supported");
+    io_servData.calloutClock(callout::ClockType::TOD_CLOCK,
+                             callout::Priority::MED, true);
+    io_servData.calloutTarget(util::pdbg::getTrgt(i_chip),
+                              callout::Priority::MED, false);
+}
+
+} // namespace P10
+
+PLUGIN_DEFINE_NS(P10_10, P10, tod_step_check_fault);
+PLUGIN_DEFINE_NS(P10_20, P10, tod_step_check_fault);
+
+} // namespace analyzer
diff --git a/analyzer/ras-data/ras-data-definition.md b/analyzer/ras-data/ras-data-definition.md
index 9c4b10f..007d01f 100644
--- a/analyzer/ras-data/ras-data-definition.md
+++ b/analyzer/ras-data/ras-data-definition.md
@@ -180,6 +180,7 @@
 |-----------------|------------------------------------------------------------|
 | OSC_REF_CLOCK_0 | Oscillator reference clock 0                               |
 | OSC_REF_CLOCK_1 | Oscillator reference clock 1                               |
+| TOD_CLOCK       | Time of Day (TOD) clock                                    |
 
 #### 5.1.7) action type `callout_procedure`
 
diff --git a/analyzer/ras-data/ras-data-parser.cpp b/analyzer/ras-data/ras-data-parser.cpp
index e3b86f6..861283b 100644
--- a/analyzer/ras-data/ras-data-parser.cpp
+++ b/analyzer/ras-data/ras-data-parser.cpp
@@ -225,6 +225,7 @@
             {
                 {"OSC_REF_CLOCK_0", callout::ClockType::OSC_REF_CLOCK_0},
                 {"OSC_REF_CLOCK_1", callout::ClockType::OSC_REF_CLOCK_1},
+                {"TOD_CLOCK",       callout::ClockType::TOD_CLOCK},
             };
             // clang-format on
 
diff --git a/analyzer/ras-data/schema/ras-data-schema-v01.json b/analyzer/ras-data/schema/ras-data-schema-v01.json
index e1bced1..77773e5 100644
--- a/analyzer/ras-data/schema/ras-data-schema-v01.json
+++ b/analyzer/ras-data/schema/ras-data-schema-v01.json
@@ -158,7 +158,8 @@
                                         "name": {
                                             "enum": [
                                                 "OSC_REF_CLOCK_0",
-                                                "OSC_REF_CLOCK_1"
+                                                "OSC_REF_CLOCK_1",
+                                                "TOD_CLOCK"
                                             ]
                                         }
                                     }
diff --git a/test/meson.build b/test/meson.build
index 662274d..c484b2e 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -31,6 +31,8 @@
     command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb',
                 '-o', '@OUTPUT@', '@INPUT@' ])
 
+pdbg_env = 'PDBG_DTB=' + pdbg_test_dtb.full_path()
+
 # end2end code exerciser for experiment and testing
 subdir('end2end')
 
@@ -70,5 +72,29 @@
                     dependencies : [ libhei_dep, libpdbg_dep, gtest_dep ],
                     cpp_args : test_arg,
                     include_directories : incdir),
-         env : [ 'PDBG_DTB=' + pdbg_test_dtb.full_path() ])
+         env : pdbg_env)
 endforeach
+
+################################################################################
+
+tc = 'test-tod-step-check-fault'
+
+src = [
+  files(
+    tc + '.cpp',
+    '../analyzer/plugins/p10-tod-plugins.cpp',
+    '../analyzer/service_data.cpp',
+    '../util/pdbg.cpp',
+  ),
+  pdbg_test_dtb,
+]
+
+dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
+
+var = [ pdbg_env ]
+
+exe = executable(tc.underscorify(), src, dependencies: dep,
+                 cpp_args: test_arg, include_directories: incdir)
+
+test(tc, exe, env: var)
+
diff --git a/test/test-tod-step-check-fault.cpp b/test/test-tod-step-check-fault.cpp
new file mode 100644
index 0000000..d27b72b
--- /dev/null
+++ b/test/test-tod-step-check-fault.cpp
@@ -0,0 +1,71 @@
+#include <stdio.h>
+
+#include <analyzer/plugins/plugin.hpp>
+#include <hei_util.hpp>
+#include <util/pdbg.hpp>
+#include <util/trace.hpp>
+
+#include "gtest/gtest.h"
+
+using namespace analyzer;
+
+static const auto nodeId =
+    static_cast<libhei::NodeId_t>(libhei::hash<libhei::NodeId_t>("TOD_ERROR"));
+
+TEST(TodStepCheckFault, TestSet1)
+{
+    pdbg_targets_init(nullptr);
+
+    libhei::Chip chip1{util::pdbg::getTrgt("/proc1"), P10_20};
+
+    // TOD_ERROR(0)[16]
+    libhei::Signature sig{chip1, nodeId, 0, 16, libhei::ATTN_TYPE_CHECKSTOP};
+
+    auto plugin =
+        PluginMap::getSingleton().get(chip1.getType(), "tod_step_check_fault");
+
+    libhei::IsolationData isoData{};
+    isoData.addSignature(sig);
+    ServiceData sd{sig, AnalysisType::SYSTEM_CHECKSTOP, isoData};
+
+    // Call the plugin.
+    plugin(1, chip1, sd);
+
+    nlohmann::json j{};
+    std::string s{};
+
+    // Callout list
+    j = sd.getCalloutList();
+    s = R"([
+    {
+        "Deconfigured": false,
+        "Guarded": false,
+        "LocationCode": "P0",
+        "Priority": "M"
+    },
+    {
+        "Deconfigured": false,
+        "Guarded": false,
+        "LocationCode": "/proc1",
+        "Priority": "M"
+    }
+])";
+    EXPECT_EQ(s, j.dump(4));
+
+    // Callout FFDC
+    j = sd.getCalloutFFDC();
+    s = R"([
+    {
+        "Callout Type": "Clock Callout",
+        "Clock Type": "TOD_CLOCK",
+        "Priority": "medium"
+    },
+    {
+        "Callout Type": "Hardware Callout",
+        "Guard": false,
+        "Priority": "medium",
+        "Target": "/proc1"
+    }
+])";
+    EXPECT_EQ(s, j.dump(4));
+}
