Index: /trunk/FACT++/src/DimState.h
===================================================================
--- /trunk/FACT++/src/DimState.h	(revision 14540)
+++ /trunk/FACT++/src/DimState.h	(revision 14541)
@@ -161,5 +161,5 @@
         for (auto it=states.begin(); it!=states.end(); it++)
             if (it->index==state())
-                return *it;
+                return State(it->index, it->name, it->comment, time());
 
         return State(kNotAvailable, "n/a");
@@ -245,5 +245,5 @@
     State description() const
     {
-        return State(state(), version());
+        return State(state(), version(), "", time());
     }
 };
@@ -307,5 +307,5 @@
     State description() const
     {
-        return State(state(), "Current label");
+        return State(state(), "Current label", "", time());
     }
 };
Index: /trunk/FACT++/src/State.cc
===================================================================
--- /trunk/FACT++/src/State.cc	(revision 14540)
+++ /trunk/FACT++/src/State.cc	(revision 14541)
@@ -40,6 +40,6 @@
 //!     Descriptive text of the state, e.g. "Connection to hardware established."
 //
-State::State(int i, const std::string &n, const std::string &c)
-    : index(i), name(Trim(n)), comment(Trim(c))
+State::State(int i, const std::string &n, const std::string &c, const Time &t)
+    : index(i), name(Trim(n)), comment(Trim(c)), time(t)
 {
 }
Index: /trunk/FACT++/src/State.h
===================================================================
--- /trunk/FACT++/src/State.h	(revision 14540)
+++ /trunk/FACT++/src/State.h	(revision 14541)
@@ -5,4 +5,6 @@
 #include <vector>
 
+#include "Time.h"
+
 struct State
 {
@@ -10,4 +12,5 @@
     std::string name;     /// Name (e.g. 'Connected')
     std::string comment;  /// Description (e.g. 'Connection to hardware established.')
+    Time        time;     /// Time of state change
 
     static std::vector<State> SplitStates(const std::string &buffer);
@@ -15,5 +18,5 @@
     static bool Compare(const State &i, const State &j) { return i.index<j.index; }
 
-    State(int i, const std::string &n, const std::string &c="");
+    State(int i=-256, const std::string &n="", const std::string &c="", const Time &t=Time(Time::none));
 };
 
Index: /trunk/FACT++/src/StateMachineDimControl.cc
===================================================================
--- /trunk/FACT++/src/StateMachineDimControl.cc	(revision 14540)
+++ /trunk/FACT++/src/StateMachineDimControl.cc	(revision 14541)
@@ -294,16 +294,16 @@
     fMutex.lock();
     const State state = dim->description();
-    fCurrentStateList[server] = make_pair(dim->state(), state.index==DimState::kNotAvailable?"":state.name);
-    fMutex.unlock();
-
-    return GetCurrentState();
-}
-
-pair<int32_t, string> StateMachineDimControl::GetServerState(const std::string &server)
+    fCurrentStateList[server] = State(state.index, state.index==DimState::kNotAvailable?"":state.name, state.comment, state.time);
+    fMutex.unlock();
+
+    return GetCurrentState();
+}
+
+State StateMachineDimControl::GetServerState(const std::string &server)
 {
     const lock_guard<mutex> guard(fMutex);
 
     const auto it = fCurrentStateList.find(server);
-    return it==fCurrentStateList.end() ? make_pair(-256, string()) : it->second;
+    return it==fCurrentStateList.end() ? State() : it->second;
 }
 
Index: /trunk/FACT++/src/StateMachineDimControl.h
===================================================================
--- /trunk/FACT++/src/StateMachineDimControl.h	(revision 14540)
+++ /trunk/FACT++/src/StateMachineDimControl.h	(revision 14541)
@@ -18,5 +18,5 @@
     std::set<Service> fServiceList;
     std::map<std::string, std::vector<std::string>> fCommandList;
-    std::map<std::string, std::pair<int32_t,  std::string>> fCurrentStateList;
+    std::map<std::string, State> fCurrentStateList;
     std::map<std::pair<std::string, int32_t>, std::pair<std::string, std::string>> fStateDescriptionList;
     std::map<std::string, std::vector<Description>> fServiceDescriptionList;
@@ -59,5 +59,5 @@
     int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="");
 
-    std::pair<int32_t, std::string> GetServerState(const std::string &server);
+    State GetServerState(const std::string &server);
 
     void SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
