diff --git a/ModeliRpc.proto b/ModeliRpc.proto
index 3f83b030ab6029a069a4b53771e9f202c1c62192..bda63be726d5818ca322f17ac55425170b2392fa 100644
--- a/ModeliRpc.proto
+++ b/ModeliRpc.proto
@@ -133,6 +133,7 @@ message NewValuesRequest {}
 
 message NewValuesResponse {
     Values values = 1;
+    double timestamp = 2;
 }
 
 message LogRequest {}
diff --git a/ModeliRpc_Cpp/ModeliRpc.pb.cc b/ModeliRpc_Cpp/ModeliRpc.pb.cc
index bfbfe4ec973af62e6ad824f34fdfd5a3f2526e78..9f522addeb6680cd81cbb3ac1fe1654ea722ce46 100644
--- a/ModeliRpc_Cpp/ModeliRpc.pb.cc
+++ b/ModeliRpc_Cpp/ModeliRpc.pb.cc
@@ -795,6 +795,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, values_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, timestamp_),
   ~0u,  // no _has_bits_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::LogRequest, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -832,8 +833,8 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 124, -1, sizeof(::ModeliRpc::SetValuesResponse)},
   { 130, -1, sizeof(::ModeliRpc::NewValuesRequest)},
   { 135, -1, sizeof(::ModeliRpc::NewValuesResponse)},
-  { 141, -1, sizeof(::ModeliRpc::LogRequest)},
-  { 146, -1, sizeof(::ModeliRpc::LogResponse)},
+  { 142, -1, sizeof(::ModeliRpc::LogRequest)},
+  { 147, -1, sizeof(::ModeliRpc::LogResponse)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -914,36 +915,37 @@ void AddDescriptorsImpl() {
       "ValuesReqest\022!\n\006values\030\001 \001(\0132\021.ModeliRpc"
       ".Values\":\n\021SetValuesResponse\022%\n\006status\030\001"
       " \001(\0162\025.ModeliRpc.Fmi2Status\"\022\n\020NewValues"
-      "Request\"6\n\021NewValuesResponse\022!\n\006values\030\001"
-      " \001(\0132\021.ModeliRpc.Values\"\014\n\nLogRequest\"\\\n"
-      "\013LogResponse\022\025\n\rinstance_name\030\001 \001(\t\022%\n\006s"
-      "tatus\030\002 \001(\0162\025.ModeliRpc.Fmi2Status\022\017\n\007me"
-      "ssage\030\003 \001(\t*o\n\nFmi2Status\022\013\n\007FMI2_OK\020\000\022\020"
-      "\n\014FMI2_WARNING\020\001\022\020\n\014FMI2_DISCARD\020\002\022\016\n\nFM"
-      "I2_ERROR\020\003\022\016\n\nFMI2_FATAL\020\004\022\020\n\014FMI2_PENDI"
-      "NG\020\0052\213\006\n\rModeliBackend\0227\n\004Play\022\026.ModeliR"
-      "pc.PlayRequest\032\027.ModeliRpc.PlayResponse\022"
-      "C\n\010PlayFast\022\032.ModeliRpc.PlayFastRequest\032"
-      "\033.ModeliRpc.PlayFastResponse\022:\n\005Pause\022\027."
-      "ModeliRpc.PauseRequest\032\030.ModeliRpc.Pause"
-      "Response\0227\n\004Stop\022\026.ModeliRpc.StopRequest"
-      "\032\027.ModeliRpc.StopResponse\022\?\n\006AddFmu\022\030.Mo"
-      "deliRpc.AddFmuRequest\032\031.ModeliRpc.AddFmu"
-      "Response(\001\022F\n\tRemoveFmu\022\033.ModeliRpc.Remo"
-      "veFmuRequest\032\034.ModeliRpc.RemoveFmuRespon"
-      "se\022U\n\016AddChannelLink\022 .ModeliRpc.AddChan"
-      "nelLinkRequest\032!.ModeliRpc.AddChannelLin"
-      "kResponse\022^\n\021RemoveChannelLink\022#.ModeliR"
-      "pc.RemoveChannelLinkRequest\032$.ModeliRpc."
-      "RemoveChannelLinkResponse\022E\n\tSetValues\022\032"
-      ".ModeliRpc.SetValuesReqest\032\034.ModeliRpc.S"
-      "etValuesResponse\022H\n\tNewValues\022\033.ModeliRp"
-      "c.NewValuesRequest\032\034.ModeliRpc.NewValues"
-      "Response0\001\0226\n\003Log\022\025.ModeliRpc.LogRequest"
-      "\032\026.ModeliRpc.LogResponse0\001b\006proto3"
+      "Request\"I\n\021NewValuesResponse\022!\n\006values\030\001"
+      " \001(\0132\021.ModeliRpc.Values\022\021\n\ttimestamp\030\002 \001"
+      "(\001\"\014\n\nLogRequest\"\\\n\013LogResponse\022\025\n\rinsta"
+      "nce_name\030\001 \001(\t\022%\n\006status\030\002 \001(\0162\025.ModeliR"
+      "pc.Fmi2Status\022\017\n\007message\030\003 \001(\t*o\n\nFmi2St"
+      "atus\022\013\n\007FMI2_OK\020\000\022\020\n\014FMI2_WARNING\020\001\022\020\n\014F"
+      "MI2_DISCARD\020\002\022\016\n\nFMI2_ERROR\020\003\022\016\n\nFMI2_FA"
+      "TAL\020\004\022\020\n\014FMI2_PENDING\020\0052\213\006\n\rModeliBacken"
+      "d\0227\n\004Play\022\026.ModeliRpc.PlayRequest\032\027.Mode"
+      "liRpc.PlayResponse\022C\n\010PlayFast\022\032.ModeliR"
+      "pc.PlayFastRequest\032\033.ModeliRpc.PlayFastR"
+      "esponse\022:\n\005Pause\022\027.ModeliRpc.PauseReques"
+      "t\032\030.ModeliRpc.PauseResponse\0227\n\004Stop\022\026.Mo"
+      "deliRpc.StopRequest\032\027.ModeliRpc.StopResp"
+      "onse\022\?\n\006AddFmu\022\030.ModeliRpc.AddFmuRequest"
+      "\032\031.ModeliRpc.AddFmuResponse(\001\022F\n\tRemoveF"
+      "mu\022\033.ModeliRpc.RemoveFmuRequest\032\034.Modeli"
+      "Rpc.RemoveFmuResponse\022U\n\016AddChannelLink\022"
+      " .ModeliRpc.AddChannelLinkRequest\032!.Mode"
+      "liRpc.AddChannelLinkResponse\022^\n\021RemoveCh"
+      "annelLink\022#.ModeliRpc.RemoveChannelLinkR"
+      "equest\032$.ModeliRpc.RemoveChannelLinkResp"
+      "onse\022E\n\tSetValues\022\032.ModeliRpc.SetValuesR"
+      "eqest\032\034.ModeliRpc.SetValuesResponse\022H\n\tN"
+      "ewValues\022\033.ModeliRpc.NewValuesRequest\032\034."
+      "ModeliRpc.NewValuesResponse0\001\0226\n\003Log\022\025.M"
+      "odeliRpc.LogRequest\032\026.ModeliRpc.LogRespo"
+      "nse0\001b\006proto3"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 2234);
+      descriptor, 2253);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "ModeliRpc.proto", &protobuf_RegisterTypes);
 }
@@ -6615,6 +6617,7 @@ void NewValuesResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int NewValuesResponse::kValuesFieldNumber;
+const int NewValuesResponse::kTimestampFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 NewValuesResponse::NewValuesResponse()
@@ -6635,11 +6638,14 @@ NewValuesResponse::NewValuesResponse(const NewValuesResponse& from)
   } else {
     values_ = NULL;
   }
+  timestamp_ = from.timestamp_;
   // @@protoc_insertion_point(copy_constructor:ModeliRpc.NewValuesResponse)
 }
 
 void NewValuesResponse::SharedCtor() {
-  values_ = NULL;
+  ::memset(&values_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&timestamp_) -
+      reinterpret_cast<char*>(&values_)) + sizeof(timestamp_));
   _cached_size_ = 0;
 }
 
@@ -6685,6 +6691,7 @@ void NewValuesResponse::Clear() {
     delete values_;
   }
   values_ = NULL;
+  timestamp_ = 0;
   _internal_metadata_.Clear();
 }
 
@@ -6710,6 +6717,20 @@ bool NewValuesResponse::MergePartialFromCodedStream(
         break;
       }
 
+      // double timestamp = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(17u /* 17 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &timestamp_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -6742,6 +6763,11 @@ void NewValuesResponse::SerializeWithCachedSizes(
       1, *this->values_, output);
   }
 
+  // double timestamp = 2;
+  if (this->timestamp() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->timestamp(), output);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
@@ -6763,6 +6789,11 @@ void NewValuesResponse::SerializeWithCachedSizes(
         1, *this->values_, deterministic, target);
   }
 
+  // double timestamp = 2;
+  if (this->timestamp() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->timestamp(), target);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
@@ -6787,6 +6818,11 @@ size_t NewValuesResponse::ByteSizeLong() const {
         *this->values_);
   }
 
+  // double timestamp = 2;
+  if (this->timestamp() != 0) {
+    total_size += 1 + 8;
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -6819,6 +6855,9 @@ void NewValuesResponse::MergeFrom(const NewValuesResponse& from) {
   if (from.has_values()) {
     mutable_values()->::ModeliRpc::Values::MergeFrom(from.values());
   }
+  if (from.timestamp() != 0) {
+    set_timestamp(from.timestamp());
+  }
 }
 
 void NewValuesResponse::CopyFrom(const ::google::protobuf::Message& from) {
@@ -6846,6 +6885,7 @@ void NewValuesResponse::Swap(NewValuesResponse* other) {
 void NewValuesResponse::InternalSwap(NewValuesResponse* other) {
   using std::swap;
   swap(values_, other->values_);
+  swap(timestamp_, other->timestamp_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
diff --git a/ModeliRpc_Cpp/ModeliRpc.pb.h b/ModeliRpc_Cpp/ModeliRpc.pb.h
index 03a959792c55a2042ae04c7d3582881ffd2b8c1b..b677837d682c3b42e3c24d5614219ca92424a025 100644
--- a/ModeliRpc_Cpp/ModeliRpc.pb.h
+++ b/ModeliRpc_Cpp/ModeliRpc.pb.h
@@ -2576,11 +2576,18 @@ class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   ::ModeliRpc::Values* mutable_values();
   void set_allocated_values(::ModeliRpc::Values* values);
 
+  // double timestamp = 2;
+  void clear_timestamp();
+  static const int kTimestampFieldNumber = 2;
+  double timestamp() const;
+  void set_timestamp(double value);
+
   // @@protoc_insertion_point(class_scope:ModeliRpc.NewValuesResponse)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::ModeliRpc::Values* values_;
+  double timestamp_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
   friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsNewValuesResponseImpl();
@@ -3880,6 +3887,20 @@ inline void NewValuesResponse::set_allocated_values(::ModeliRpc::Values* values)
   // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.values)
 }
 
+// double timestamp = 2;
+inline void NewValuesResponse::clear_timestamp() {
+  timestamp_ = 0;
+}
+inline double NewValuesResponse::timestamp() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.timestamp)
+  return timestamp_;
+}
+inline void NewValuesResponse::set_timestamp(double value) {
+  
+  timestamp_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.NewValuesResponse.timestamp)
+}
+
 // -------------------------------------------------------------------
 
 // LogRequest
diff --git a/ModeliRpc_Cs/ModeliRpc.cs b/ModeliRpc_Cs/ModeliRpc.cs
index b3991380cff6172cf1d1c032b611110a844c2524..4b8c9ea29555abecf2d597fde829b365e23a7723 100644
--- a/ModeliRpc_Cs/ModeliRpc.cs
+++ b/ModeliRpc_Cs/ModeliRpc.cs
@@ -47,31 +47,32 @@ namespace ModeliRpc {
             "GVJlbW92ZUNoYW5uZWxMaW5rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI0",
             "Cg9TZXRWYWx1ZXNSZXFlc3QSIQoGdmFsdWVzGAEgASgLMhEuTW9kZWxpUnBj",
             "LlZhbHVlcyI6ChFTZXRWYWx1ZXNSZXNwb25zZRIlCgZzdGF0dXMYASABKA4y",
-            "FS5Nb2RlbGlScGMuRm1pMlN0YXR1cyISChBOZXdWYWx1ZXNSZXF1ZXN0IjYK",
+            "FS5Nb2RlbGlScGMuRm1pMlN0YXR1cyISChBOZXdWYWx1ZXNSZXF1ZXN0IkkK",
             "EU5ld1ZhbHVlc1Jlc3BvbnNlEiEKBnZhbHVlcxgBIAEoCzIRLk1vZGVsaVJw",
-            "Yy5WYWx1ZXMiDAoKTG9nUmVxdWVzdCJcCgtMb2dSZXNwb25zZRIVCg1pbnN0",
-            "YW5jZV9uYW1lGAEgASgJEiUKBnN0YXR1cxgCIAEoDjIVLk1vZGVsaVJwYy5G",
-            "bWkyU3RhdHVzEg8KB21lc3NhZ2UYAyABKAkqbwoKRm1pMlN0YXR1cxILCgdG",
-            "TUkyX09LEAASEAoMRk1JMl9XQVJOSU5HEAESEAoMRk1JMl9ESVNDQVJEEAIS",
-            "DgoKRk1JMl9FUlJPUhADEg4KCkZNSTJfRkFUQUwQBBIQCgxGTUkyX1BFTkRJ",
-            "TkcQBTKLBgoNTW9kZWxpQmFja2VuZBI3CgRQbGF5EhYuTW9kZWxpUnBjLlBs",
-            "YXlSZXF1ZXN0GhcuTW9kZWxpUnBjLlBsYXlSZXNwb25zZRJDCghQbGF5RmFz",
-            "dBIaLk1vZGVsaVJwYy5QbGF5RmFzdFJlcXVlc3QaGy5Nb2RlbGlScGMuUGxh",
-            "eUZhc3RSZXNwb25zZRI6CgVQYXVzZRIXLk1vZGVsaVJwYy5QYXVzZVJlcXVl",
-            "c3QaGC5Nb2RlbGlScGMuUGF1c2VSZXNwb25zZRI3CgRTdG9wEhYuTW9kZWxp",
-            "UnBjLlN0b3BSZXF1ZXN0GhcuTW9kZWxpUnBjLlN0b3BSZXNwb25zZRI/CgZB",
-            "ZGRGbXUSGC5Nb2RlbGlScGMuQWRkRm11UmVxdWVzdBoZLk1vZGVsaVJwYy5B",
-            "ZGRGbXVSZXNwb25zZSgBEkYKCVJlbW92ZUZtdRIbLk1vZGVsaVJwYy5SZW1v",
-            "dmVGbXVSZXF1ZXN0GhwuTW9kZWxpUnBjLlJlbW92ZUZtdVJlc3BvbnNlElUK",
-            "DkFkZENoYW5uZWxMaW5rEiAuTW9kZWxpUnBjLkFkZENoYW5uZWxMaW5rUmVx",
-            "dWVzdBohLk1vZGVsaVJwYy5BZGRDaGFubmVsTGlua1Jlc3BvbnNlEl4KEVJl",
-            "bW92ZUNoYW5uZWxMaW5rEiMuTW9kZWxpUnBjLlJlbW92ZUNoYW5uZWxMaW5r",
-            "UmVxdWVzdBokLk1vZGVsaVJwYy5SZW1vdmVDaGFubmVsTGlua1Jlc3BvbnNl",
-            "EkUKCVNldFZhbHVlcxIaLk1vZGVsaVJwYy5TZXRWYWx1ZXNSZXFlc3QaHC5N",
-            "b2RlbGlScGMuU2V0VmFsdWVzUmVzcG9uc2USSAoJTmV3VmFsdWVzEhsuTW9k",
-            "ZWxpUnBjLk5ld1ZhbHVlc1JlcXVlc3QaHC5Nb2RlbGlScGMuTmV3VmFsdWVz",
-            "UmVzcG9uc2UwARI2CgNMb2cSFS5Nb2RlbGlScGMuTG9nUmVxdWVzdBoWLk1v",
-            "ZGVsaVJwYy5Mb2dSZXNwb25zZTABYgZwcm90bzM="));
+            "Yy5WYWx1ZXMSEQoJdGltZXN0YW1wGAIgASgBIgwKCkxvZ1JlcXVlc3QiXAoL",
+            "TG9nUmVzcG9uc2USFQoNaW5zdGFuY2VfbmFtZRgBIAEoCRIlCgZzdGF0dXMY",
+            "AiABKA4yFS5Nb2RlbGlScGMuRm1pMlN0YXR1cxIPCgdtZXNzYWdlGAMgASgJ",
+            "Km8KCkZtaTJTdGF0dXMSCwoHRk1JMl9PSxAAEhAKDEZNSTJfV0FSTklORxAB",
+            "EhAKDEZNSTJfRElTQ0FSRBACEg4KCkZNSTJfRVJST1IQAxIOCgpGTUkyX0ZB",
+            "VEFMEAQSEAoMRk1JMl9QRU5ESU5HEAUyiwYKDU1vZGVsaUJhY2tlbmQSNwoE",
+            "UGxheRIWLk1vZGVsaVJwYy5QbGF5UmVxdWVzdBoXLk1vZGVsaVJwYy5QbGF5",
+            "UmVzcG9uc2USQwoIUGxheUZhc3QSGi5Nb2RlbGlScGMuUGxheUZhc3RSZXF1",
+            "ZXN0GhsuTW9kZWxpUnBjLlBsYXlGYXN0UmVzcG9uc2USOgoFUGF1c2USFy5N",
+            "b2RlbGlScGMuUGF1c2VSZXF1ZXN0GhguTW9kZWxpUnBjLlBhdXNlUmVzcG9u",
+            "c2USNwoEU3RvcBIWLk1vZGVsaVJwYy5TdG9wUmVxdWVzdBoXLk1vZGVsaVJw",
+            "Yy5TdG9wUmVzcG9uc2USPwoGQWRkRm11EhguTW9kZWxpUnBjLkFkZEZtdVJl",
+            "cXVlc3QaGS5Nb2RlbGlScGMuQWRkRm11UmVzcG9uc2UoARJGCglSZW1vdmVG",
+            "bXUSGy5Nb2RlbGlScGMuUmVtb3ZlRm11UmVxdWVzdBocLk1vZGVsaVJwYy5S",
+            "ZW1vdmVGbXVSZXNwb25zZRJVCg5BZGRDaGFubmVsTGluaxIgLk1vZGVsaVJw",
+            "Yy5BZGRDaGFubmVsTGlua1JlcXVlc3QaIS5Nb2RlbGlScGMuQWRkQ2hhbm5l",
+            "bExpbmtSZXNwb25zZRJeChFSZW1vdmVDaGFubmVsTGluaxIjLk1vZGVsaVJw",
+            "Yy5SZW1vdmVDaGFubmVsTGlua1JlcXVlc3QaJC5Nb2RlbGlScGMuUmVtb3Zl",
+            "Q2hhbm5lbExpbmtSZXNwb25zZRJFCglTZXRWYWx1ZXMSGi5Nb2RlbGlScGMu",
+            "U2V0VmFsdWVzUmVxZXN0GhwuTW9kZWxpUnBjLlNldFZhbHVlc1Jlc3BvbnNl",
+            "EkgKCU5ld1ZhbHVlcxIbLk1vZGVsaVJwYy5OZXdWYWx1ZXNSZXF1ZXN0Ghwu",
+            "TW9kZWxpUnBjLk5ld1ZhbHVlc1Jlc3BvbnNlMAESNgoDTG9nEhUuTW9kZWxp",
+            "UnBjLkxvZ1JlcXVlc3QaFi5Nb2RlbGlScGMuTG9nUmVzcG9uc2UwAWIGcHJv",
+            "dG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { },
           new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ModeliRpc.Fmi2Status), }, new pbr::GeneratedClrTypeInfo[] {
@@ -96,7 +97,7 @@ namespace ModeliRpc {
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetValuesReqest), global::ModeliRpc.SetValuesReqest.Parser, new[]{ "Values" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetValuesResponse), global::ModeliRpc.SetValuesResponse.Parser, new[]{ "Status" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesRequest), global::ModeliRpc.NewValuesRequest.Parser, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesResponse), global::ModeliRpc.NewValuesResponse.Parser, new[]{ "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesResponse), global::ModeliRpc.NewValuesResponse.Parser, new[]{ "Values", "Timestamp" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.LogRequest), global::ModeliRpc.LogRequest.Parser, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.LogResponse), global::ModeliRpc.LogResponse.Parser, new[]{ "InstanceName", "Status", "Message" }, null, null, null)
           }));
@@ -2827,6 +2828,7 @@ namespace ModeliRpc {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public NewValuesResponse(NewValuesResponse other) : this() {
       Values = other.values_ != null ? other.Values.Clone() : null;
+      timestamp_ = other.timestamp_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2845,6 +2847,17 @@ namespace ModeliRpc {
       }
     }
 
+    /// <summary>Field number for the "timestamp" field.</summary>
+    public const int TimestampFieldNumber = 2;
+    private double timestamp_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Timestamp {
+      get { return timestamp_; }
+      set {
+        timestamp_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as NewValuesResponse);
@@ -2859,6 +2872,7 @@ namespace ModeliRpc {
         return true;
       }
       if (!object.Equals(Values, other.Values)) return false;
+      if (Timestamp != other.Timestamp) return false;
       return true;
     }
 
@@ -2866,6 +2880,7 @@ namespace ModeliRpc {
     public override int GetHashCode() {
       int hash = 1;
       if (values_ != null) hash ^= Values.GetHashCode();
+      if (Timestamp != 0D) hash ^= Timestamp.GetHashCode();
       return hash;
     }
 
@@ -2880,6 +2895,10 @@ namespace ModeliRpc {
         output.WriteRawTag(10);
         output.WriteMessage(Values);
       }
+      if (Timestamp != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Timestamp);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2888,6 +2907,9 @@ namespace ModeliRpc {
       if (values_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
       }
+      if (Timestamp != 0D) {
+        size += 1 + 8;
+      }
       return size;
     }
 
@@ -2902,6 +2924,9 @@ namespace ModeliRpc {
         }
         Values.MergeFrom(other.Values);
       }
+      if (other.Timestamp != 0D) {
+        Timestamp = other.Timestamp;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2919,6 +2944,10 @@ namespace ModeliRpc {
             input.ReadMessage(values_);
             break;
           }
+          case 17: {
+            Timestamp = input.ReadDouble();
+            break;
+          }
         }
       }
     }