diff --git a/SocketFMU/SocketFMU/JsonModelDescription.cpp b/SocketFMU/SocketFMU/JsonModelDescription.cpp
index 985d0a85031a1e5781866784489ea1cb08143d9b..34e26b0acd8f37e5e91610851a20e9711350a3b0 100644
--- a/SocketFMU/SocketFMU/JsonModelDescription.cpp
+++ b/SocketFMU/SocketFMU/JsonModelDescription.cpp
@@ -26,6 +26,7 @@ void JsonModelDescription::Load(std::string resourceDir)
 		Channels.push_back(SocketChannel(
 			channel.second.get<std::string>("Name"),
 			channel.second.get<unsigned int>("ValueRef"),
-			channel.second.get<bool>("IsSender")));
+			channel.second.get<bool>("IsSender"),
+			channel.second.get<bool>("ReverseEndianness")));
 	}
 }
diff --git a/SocketFMU/SocketFMU/SocketChannel.cpp b/SocketFMU/SocketFMU/SocketChannel.cpp
index dc70190ce4adca26d700fb9e93bdd8063a717597..31aac762ea7434eecb2ce1b8d378ec09245692fe 100644
--- a/SocketFMU/SocketFMU/SocketChannel.cpp
+++ b/SocketFMU/SocketFMU/SocketChannel.cpp
@@ -6,8 +6,8 @@ SocketChannel::SocketChannel()
 }
 
 
-SocketChannel::SocketChannel(std::string name, unsigned int valueRef, bool settable) :
-	_name(name), _valueRef(valueRef), _isSender(settable), _value(0)
+SocketChannel::SocketChannel(std::string name, unsigned int valueRef, bool settable, bool reverseEndianness) :
+	_name(name), _valueRef(valueRef), _isSender(settable), _reverseEndianness(reverseEndianness), _value(0)
 {
 }
 
@@ -39,3 +39,8 @@ bool SocketChannel::IsSender() const
 {
 	return _isSender;
 }
+
+bool SocketChannel::ReverseEndianness() const
+{
+	return _reverseEndianness;
+}
diff --git a/SocketFMU/SocketFMU/SocketChannel.h b/SocketFMU/SocketFMU/SocketChannel.h
index 3cc8161c46e41fda37fac004ea605217b289330b..6afb186c40d38563ae29e9cc5a310b377fd65155 100644
--- a/SocketFMU/SocketFMU/SocketChannel.h
+++ b/SocketFMU/SocketFMU/SocketChannel.h
@@ -6,10 +6,11 @@ private:
 	std::string _name;
 	unsigned int _valueRef;
 	bool _isSender;
+	bool _reverseEndianness;
 	double _value;
 	SocketChannel();
 public:
-	SocketChannel(std::string name, unsigned int valueRef, bool settable);
+	SocketChannel(std::string name, unsigned int valueRef, bool settable, bool reverseEndianness);
 	~SocketChannel();
 
 	std::string GetName();
@@ -17,5 +18,6 @@ public:
 	double GetValue() const;
 	void SetValue(double value);
 	bool IsSender() const;
+	bool ReverseEndianness() const;
 };
 
diff --git a/SocketFMU/SocketFMU/SocketFmiComponent.cpp b/SocketFMU/SocketFMU/SocketFmiComponent.cpp
index ad6127b6ebc48ba1b30554497a6d553c5c0fdd79..2a9df17a31155acc730a8e4e39dd07e6f9743e4e 100644
--- a/SocketFMU/SocketFMU/SocketFmiComponent.cpp
+++ b/SocketFMU/SocketFMU/SocketFmiComponent.cpp
@@ -3,6 +3,7 @@
 #include "TcpConnection.h"
 #include "UdpConnection.h"
 #include "JsonModelDescription.h"
+#include "EndianConverter.h"
 
 SocketFmiComponent::SocketFmiComponent()
 {
@@ -84,15 +85,22 @@ void SocketFmiComponent::valuesReceivedCallback(std::shared_ptr<std::vector<doub
 	size_t channel = 0;
 	_mutex.lock();
 	// received values and channels are sorted by valueRef
+	 
+	//Log(fmi2Status::fmi2Error, std::string("receivedValues size ") + std::to_string(receivedValues->size()) + std::string("  _channels.size() ") + std::to_string(_channels.size()));
 	while (receivedValue < receivedValues->size() && channel < _channels.size())
 	{
-		while (channel < _channels.size())
+		bool foundRightChannel = false;
+		while (!foundRightChannel && channel < _channels.size())
 		{
 			// Break condition if found -> setvalue
 			if (!_channels[channel].IsSender())
 			{
+				if (_channels[channel].ReverseEndianness())
+				{
+					EndianConverter::ReverseEndianness((*receivedValues)[receivedValue]);
+				}				
 				_channels[channel].SetValue((*receivedValues)[receivedValue]);
-				break;
+				foundRightChannel = true;
 			}
 			channel++;
 		}
@@ -112,7 +120,12 @@ void SocketFmiComponent::DoStep(fmi2Real currentCommunicationPoint, fmi2Real ste
 	{
 		if (channel.IsSender())
 		{
-			buff.push_back(channel.GetValue());
+			double val = channel.GetValue();
+			if (channel.ReverseEndianness())
+			{
+				EndianConverter::ReverseEndianness(val);
+			}
+			buff.push_back(val);
 		}
 	}
 	_mutex.unlock();
diff --git a/SocketFMU/SocketFMU_Generator/Models/SocketChannel.cs b/SocketFMU/SocketFMU_Generator/Models/SocketChannel.cs
index ca43f05780ff222934674a774609015763987637..fe4e30645424c3530a29f96bca3249ffe21c9269 100644
--- a/SocketFMU/SocketFMU_Generator/Models/SocketChannel.cs
+++ b/SocketFMU/SocketFMU_Generator/Models/SocketChannel.cs
@@ -7,6 +7,7 @@
         private uint _valueRef;
         private string _displayedUnit;
         private bool _isSender;
+        private bool _reverseEndianness;
 
         /// <summary>
         /// Displayed name of the channel
@@ -61,6 +62,22 @@
             }
         }
 
+        /// <summary>
+        /// Whether the channel value's endianness should be reversed
+        /// </summary>
+        public bool ReverseEndianness
+        {
+            get 
+            { 
+                return _reverseEndianness; 
+            }
+            set
+            {
+                Set(ref _reverseEndianness, value);
+            }
+        }
+
+
         public SocketChannel()
         {
         }
diff --git a/SocketFMU/SocketFMU_Generator/Views/MainWindow.xaml b/SocketFMU/SocketFMU_Generator/Views/MainWindow.xaml
index 486eb237fd0ee5f448f2e628f5c77694615348ce..7196c147de1acfdb45d3ba291840bf253a8f815a 100644
--- a/SocketFMU/SocketFMU_Generator/Views/MainWindow.xaml
+++ b/SocketFMU/SocketFMU_Generator/Views/MainWindow.xaml
@@ -40,6 +40,10 @@
                     Binding="{Binding ValueRef}"
                     Header="ValueRef"
                     IsReadOnly="True" />
+                <DataGridCheckBoxColumn
+                    Width="Auto"
+                    Binding="{Binding ReverseEndianness}"
+                    Header="Reverse Endianess" />
             </DataGrid.Columns>
         </DataGrid>
         <StackPanel