diff --git a/Basics/Classes/BufferedSamplesTable.cs b/Basics/Classes/BufferedSamplesTable.cs
index 920a3c5237f8d4cc4f7c4100bd86ebcda3447995..694f82971083a403620651b593462af35d473b4a 100644
--- a/Basics/Classes/BufferedSamplesTable.cs
+++ b/Basics/Classes/BufferedSamplesTable.cs
@@ -22,7 +22,7 @@ namespace ModeliChart.Basics
             fileStorage = new FileSamplesTable(valueRefs);
         }
 
-        public void AddSamples(double time, IEnumerable<uint> valueRefs, IEnumerable<double> values)
+        public void AddSamples(double time, IList<uint> valueRefs, IList<double> values)
         {
             buffer.AddSamples(time, valueRefs, values);
             fileStorage.AddSamples(time, valueRefs, values);
diff --git a/Basics/Classes/DataRepository.cs b/Basics/Classes/DataRepository.cs
index 55e798750c8d83f1aac34d563a2803719d29b59e..74e852a8159c882ef98075f9f68935d91de8e6c2 100644
--- a/Basics/Classes/DataRepository.cs
+++ b/Basics/Classes/DataRepository.cs
@@ -21,7 +21,7 @@ namespace ModeliChart.Basics
             this.createStorage = createStorage;
         }
 
-        public void AddValues(string modelInstanceName, double time, IEnumerable<uint> valueRefs, IEnumerable<double> values)
+        public void AddValues(string modelInstanceName, double time, IList<uint> valueRefs, IList<double> values)
         {
             // Create new storage if needed
             if (!storages.ContainsKey(modelInstanceName))
diff --git a/Basics/Classes/FileSamplesTable.cs b/Basics/Classes/FileSamplesTable.cs
index f24b28d078dfb6258bb07a0bad3e54dccdd8af9d..18292d918ee0a2453239ff0f674810645ea64dc9 100644
--- a/Basics/Classes/FileSamplesTable.cs
+++ b/Basics/Classes/FileSamplesTable.cs
@@ -25,6 +25,7 @@ namespace ModeliChart.Basics
         // Efficient access via dictionaries
         private readonly Dictionary<uint, int> posByValueRef;
         private readonly int bufferSize;
+        double time_lastWrite;
 
         /// <summary>
         /// The valueRefs must be known in advance, since calculations depend on a fixed number of channels.
@@ -130,18 +131,19 @@ namespace ModeliChart.Basics
         /// <param name="time"></param>
         /// <param name="valueRefs"></param>
         /// <param name="values"></param>
-        public void AddSamples(double time, IEnumerable<uint> valueRefs, IEnumerable<double> values)
+        public void AddSamples(double time, IList<uint> valueRefs, IList<double> values)
         {
             // Buffer = Timestamp + values
             var buffer = new double[bufferSize];
             var zipped = from valueRef in valueRefs
-                         where posByValueRef.ContainsKey(valueRef)
-                         from value in values
+                         join value in values on valueRefs.IndexOf(valueRef) equals values.IndexOf(value)
                          select (valueRef, value);
+           
             foreach (var (valueRef, value) in zipped)
             {
                 SetBufferValue(buffer, valueRef, value);
             }
+            time_lastWrite = time;
             SetBufferTIme(buffer, time);
             // Append to the writer buffer
             writeCache.Add(buffer);
@@ -184,6 +186,10 @@ namespace ModeliChart.Basics
                 Buffer.BlockCopy(buffer, 0, doubleBuffer, 0, buffer.Length);
                 var time = GetBufferTime(doubleBuffer);
                 // Only add data that is requested
+                if (endTime==0)
+                {
+                    endTime = time_lastWrite;
+                }
                 if (time >= startTime && time <= endTime)
                 {
                     // Add new row to table
@@ -191,7 +197,8 @@ namespace ModeliChart.Basics
                     row[timeColumn] = time;
                     foreach (var channel in channels)
                     {
-                        row[channel.Name] = GetBufferValue(doubleBuffer, channel.ValueRef);
+                        double val =  GetBufferValue(doubleBuffer, channel.ValueRef);
+                        row[channel.Name] = val;
                     }
                     table.Rows.Add(row);
                 }
diff --git a/Basics/Classes/NewValuesEventArgs.cs b/Basics/Classes/NewValuesEventArgs.cs
index 3291f7c9b9dbb5d5843bfcda9841497432b63665..bb9ce52d7dcfdf6a7fadba8e1b183f0cfca50b02 100644
--- a/Basics/Classes/NewValuesEventArgs.cs
+++ b/Basics/Classes/NewValuesEventArgs.cs
@@ -7,7 +7,7 @@ namespace ModeliChart.Basics
     {
         public string ModelInstanceName { get; set; }
         public double Time { get; set; }
-        public IEnumerable<uint> ValueRefs { get; set; }
-        public IEnumerable<double> Values { get; set; }
+        public IList<uint> ValueRefs { get; set; }
+        public IList<double> Values { get; set; }
     }
 }
diff --git a/Basics/Interfaces/IDataRepositorry.cs b/Basics/Interfaces/IDataRepositorry.cs
index b82485c5f7641bfa01199d07b8899eb132c74215..da6095f5909858cce16e86946fe05842a464c7e3 100644
--- a/Basics/Interfaces/IDataRepositorry.cs
+++ b/Basics/Interfaces/IDataRepositorry.cs
@@ -19,7 +19,7 @@ namespace ModeliChart.Basics
         /// <param name="time"></param>
         /// <param name="valueRefs"></param>
         /// <param name="values"></param>
-        void AddValues(string modelInstanceName, double time, IEnumerable<uint> valueRefs, IEnumerable<double> values);
+        void AddValues(string modelInstanceName, double time, IList<uint> valueRefs, IList<double> values);
 
         /// <summary>
         /// Retrieves the values of one channel which are stored in memory.
diff --git a/Basics/Interfaces/ISamplesStorage.cs b/Basics/Interfaces/ISamplesStorage.cs
index ce6d82c0ec39865c137b9f5dbd5500024f7912cb..c3515a5c176f6cb1d1573c2b5637b99e9ad63441 100644
--- a/Basics/Interfaces/ISamplesStorage.cs
+++ b/Basics/Interfaces/ISamplesStorage.cs
@@ -16,7 +16,7 @@ namespace ModeliChart.Basics
         /// <param name="time"></param>
         /// <param name="valueRefs">Ordered IEnumerable of the channels value-references.</param>
         /// <param name="values">Ordered IEnumerable of the values that belong to the valueRefs.</param>
-        void AddSamples(double time, IEnumerable<uint> valueRefs, IEnumerable<double> values);
+        void AddSamples(double time, IList<uint> valueRefs, IList<double> values);
 
         /// <summary>
         /// Get the buffered samples or one specific channel.
diff --git a/FmuTools/FmuTools.csproj b/FmuTools/FmuTools.csproj
index 4ac7a25e29a44a95e1eb3880638f32f80e22ab17..2297564292de29f5c30235fe14dfdad9df552fef 100644
--- a/FmuTools/FmuTools.csproj
+++ b/FmuTools/FmuTools.csproj
@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>ModeliChart.FmuTools</RootNamespace>
     <AssemblyName>FmuTools</AssemblyName>
-    <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <TargetFrameworkProfile />
   </PropertyGroup>
diff --git a/LocalMode/FmuInstance.cs b/LocalMode/FmuInstance.cs
index ec0c084c2ceaf0723489fb97cfb6e63106dc63a0..3f3ebb0c36a09e23d804a1cdba6cb554cacb5492 100644
--- a/LocalMode/FmuInstance.cs
+++ b/LocalMode/FmuInstance.cs
@@ -31,7 +31,7 @@ namespace ModeliChart.LocalMode
         private readonly Dictionary<uint, int> realVrPos = new Dictionary<uint, int>();
         private readonly Dictionary<uint, int> boolVrPos = new Dictionary<uint, int>();
         // Order: Int-Real-Bool !!!
-        private readonly IEnumerable<uint> concatenatedVrs;
+        private readonly IList<uint> concatenatedVrs;
 
         public string Name { get; private set; }
 
@@ -51,7 +51,7 @@ namespace ModeliChart.LocalMode
             intVrs = FmuChannels.GetIntVrs(model.Channels).Distinct().ToArray();
             realVrs = FmuChannels.GetRealVrs(model.Channels).Distinct().ToArray();
             boolVrs = FmuChannels.GetBoolVrs(model.Channels).Distinct().ToArray();
-            concatenatedVrs = intVrs.Concat(realVrs).Concat(boolVrs);
+            concatenatedVrs = intVrs.Concat(realVrs).Concat(boolVrs).ToList();
             intValues = new int[intVrs.Length];
             realValues = new double[realVrs.Length];
             boolValues = new bool[boolVrs.Length];
@@ -203,7 +203,7 @@ namespace ModeliChart.LocalMode
             }
         }
 
-        internal (IEnumerable<uint> ValueRefs, IEnumerable<double> Values) GetCurrentValues()
+        internal (IList<uint> ValueRefs, IList<double> Values) GetCurrentValues()
         {
             // Update local values from fmu
             fmu.GetInteger(intVrs, intValues);
@@ -214,7 +214,7 @@ namespace ModeliChart.LocalMode
                    .Select(i => Convert.ToDouble(i))
                    .Concat(realValues)
                    .Concat(boolValues.Select(b => Convert.ToDouble(b)));
-            return (concatenatedVrs, values);
+            return (concatenatedVrs, values.ToList());
         } 
 
         public void Dispose()