diff --git a/VectoCore/Utils/SI.cs b/VectoCore/Utils/SI.cs
index 85832f498a6e88a188b50dae3e5b4344040f1710..7ef39437b935ab0b9bb91aa44646a3a4399ec5da 100644
--- a/VectoCore/Utils/SI.cs
+++ b/VectoCore/Utils/SI.cs
@@ -378,6 +378,11 @@ namespace TUGraz.VectoCore.Utils
             return new SI(si1._value * d, si1);
         }
 
+        public static SI operator *(double d, SI si1)
+        {
+            return new SI(d * si1._value, si1);
+        }
+
         public static SI operator /(SI si1, double d)
         {
             return new SI(si1._value / d, si1);
@@ -385,7 +390,7 @@ namespace TUGraz.VectoCore.Utils
 
         public static SI operator /(double d, SI si1)
         {
-            return si1 / d;
+            return new SI(d / si1._value, si1);
         }
 
         public static bool operator <(SI si1, SI si2)
diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj
index d0a82d8e027862f7d5ffb5cb07f01cdb77f6edcf..a26dbfb6c289ef824e055dff5799da0f8bf36f77 100644
--- a/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore.csproj
@@ -25,7 +25,7 @@
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
     <CodeAnalysisIgnoreGeneratedCode>true</CodeAnalysisIgnoreGeneratedCode>
-    <CodeContractsEnableRuntimeChecking>True</CodeContractsEnableRuntimeChecking>
+    <CodeContractsEnableRuntimeChecking>False</CodeContractsEnableRuntimeChecking>
     <CodeContractsRuntimeOnlyPublicSurface>False</CodeContractsRuntimeOnlyPublicSurface>
     <CodeContractsRuntimeThrowOnFailure>True</CodeContractsRuntimeThrowOnFailure>
     <CodeContractsRuntimeCallSiteRequires>False</CodeContractsRuntimeCallSiteRequires>
diff --git a/VectoCoreTest/Utils/SITest.cs b/VectoCoreTest/Utils/SITest.cs
index 1b526b0ca39b85a20ae14bdef37191891abda278..683269b4e1260c20acc3d6921c213586fd0973ae 100644
--- a/VectoCoreTest/Utils/SITest.cs
+++ b/VectoCoreTest/Utils/SITest.cs
@@ -52,6 +52,20 @@ namespace TUGraz.VectoCore.Tests.Utils
             Assert.AreEqual(5000, (double)kg);
             Assert.AreEqual("5000 [g]", kg.ToString());
 
+            var x = 5.SI();
+            Assert.AreEqual((2.0 / 5.0).SI(), 2 / x);
+            Assert.AreEqual((5.0 / 2.0).SI(), x / 2);
+            Assert.AreEqual((2.0 * 5.0).SI(), 2 * x);
+            Assert.AreEqual((5.0 * 2.0).SI(), x * 2);
+
+            Assert.AreEqual((2.0 / 5.0).SI(), 2.0 / x);
+            Assert.AreEqual((5.0 / 2.0).SI(), x / 2.0);
+            Assert.AreEqual((2 * 5).SI(), 2.0 * x);
+            Assert.AreEqual((5 * 2).SI(), x * 2.0);
+
+
+            var y = 2.SI();
+            Assert.AreEqual((2 * 5).SI(), y * x);
         }
     }
 }