diff --git a/src/main/java/org/orekit/models/earth/ViennaModelCoefficientsLoader.java b/src/main/java/org/orekit/models/earth/ViennaModelCoefficientsLoader.java
index b6503082e4ba1b1cf64d558f4d239b7a7c18f94d..e1b03e8b29b3db221e673985a55ccde20844f43a 100644
--- a/src/main/java/org/orekit/models/earth/ViennaModelCoefficientsLoader.java
+++ b/src/main/java/org/orekit/models/earth/ViennaModelCoefficientsLoader.java
@@ -24,6 +24,8 @@ import java.text.ParseException;
 import java.util.ArrayList;
 
 import org.hipparchus.analysis.interpolation.BilinearInterpolatingFunction;
+import org.hipparchus.util.FastMath;
+import org.hipparchus.util.MathUtils;
 import org.orekit.data.DataLoader;
 import org.orekit.data.DataProvidersManager;
 import org.orekit.errors.OrekitException;
@@ -109,9 +111,12 @@ public class ViennaModelCoefficientsLoader implements DataLoader {
         this.coefficientsA  = null;
         this.zenithDelay    = null;
         this.supportedNames = supportedNames;
-        this.latitude       = latitude;
-        this.longitude      = longitude;
         this.type           = type;
+        this.latitude       = latitude;
+
+        // Normalize longitude between 0° and 360°
+        final double lon = MathUtils.normalizeAngle(FastMath.toRadians(longitude), FastMath.PI);
+        this.longitude   = FastMath.toDegrees(lon);
     }
 
     /** Constructor with default supported names.
diff --git a/src/test/java/org/orekit/models/earth/ViennaModelCoefficientsLoaderTest.java b/src/test/java/org/orekit/models/earth/ViennaModelCoefficientsLoaderTest.java
index cd0fb77b9204f5d9af33b887daf3a344410d37b1..8404a9f5cd04b462071760376fed56606d8fae21 100644
--- a/src/test/java/org/orekit/models/earth/ViennaModelCoefficientsLoaderTest.java
+++ b/src/test/java/org/orekit/models/earth/ViennaModelCoefficientsLoaderTest.java
@@ -25,6 +25,8 @@ import org.orekit.time.DateTimeComponents;
 
 public class ViennaModelCoefficientsLoaderTest {
 
+    private static double epsilon = 1.0e-16;
+
     @Test
     /**
      * Regular test for 19th of November 2018 with Vienna 1 model
@@ -43,11 +45,11 @@ public class ViennaModelCoefficientsLoaderTest {
         final double a[]       = tropoLoader.getA();
         final double delays[]  = tropoLoader.getZenithDelay();
         
-        Assert.assertEquals(0.00127935, a[0], 1e-16);
-        Assert.assertEquals(0.00064084, a[1], 1e-16);
+        Assert.assertEquals(0.00127935, a[0], epsilon);
+        Assert.assertEquals(0.00064084, a[1], epsilon);
         
-        Assert.assertEquals(2.3131, delays[0], 1e-16);
-        Assert.assertEquals(0.3086, delays[1], 1e-16);
+        Assert.assertEquals(2.3131, delays[0], epsilon);
+        Assert.assertEquals(0.3086, delays[1], epsilon);
     }
 
     @Test
@@ -68,11 +70,11 @@ public class ViennaModelCoefficientsLoaderTest {
         final double a[]       = tropoLoader.getA();
         final double delays[]  = tropoLoader.getZenithDelay();
         
-        Assert.assertEquals(0.00117002, a[0], 1e-16);
-        Assert.assertEquals(0.00045484, a[1], 1e-16);
+        Assert.assertEquals(0.00117002, a[0], epsilon);
+        Assert.assertEquals(0.00045484, a[1], epsilon);
         
-        Assert.assertEquals(2.3203, delays[0], 1e-16);
-        Assert.assertEquals(0.0191, delays[1], 1e-16);
+        Assert.assertEquals(2.3203, delays[0], epsilon);
+        Assert.assertEquals(0.0191, delays[1], epsilon);
     }
 
     @Test
@@ -93,11 +95,72 @@ public class ViennaModelCoefficientsLoaderTest {
         final double a[]       = tropoLoader.getA();
         final double delays[]  = tropoLoader.getZenithDelay();
         
-        Assert.assertEquals(0.00127606, a[0], 1e-16);
-        Assert.assertEquals(0.00056388, a[1], 1e-16);
+        Assert.assertEquals(0.00127606, a[0], epsilon);
+        Assert.assertEquals(0.00056388, a[1], epsilon);
         
-        Assert.assertEquals(2.3117, delays[0], 1e-16);
-        Assert.assertEquals(0.2239, delays[1], 1e-16);
+        Assert.assertEquals(2.3117, delays[0], epsilon);
+        Assert.assertEquals(0.2239, delays[1], epsilon);
+    }
+
+    @Test
+    public void testEquality() {
+
+        // Commons parameters
+        Utils.setDataRoot("vmf3-1x1-tropospheric-coefficients");
+        DateTimeComponents dateTimeComponents = new DateTimeComponents(2018, 11, 25, 0, 0, 0.0);
+        final double latitude   = 45.0;
+        
+        double longitude1;
+        ViennaModelCoefficientsLoader model1;
+
+        double longitude2;
+        ViennaModelCoefficientsLoader model2;
+
+        // Test longitude = 181° and longitude = -179°
+        longitude1 = 181.0;
+        longitude2 = -179.0;
+
+        model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
+        model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
+
+        model1.loadViennaCoefficients(dateTimeComponents);
+        model2.loadViennaCoefficients(dateTimeComponents);
+
+        Assert.assertEquals(model1.getA()[0],           model2.getA()[0],           epsilon);
+        Assert.assertEquals(model1.getA()[1],           model2.getA()[1],           epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
+
+        // Test longitude = 180° and longitude = -180°
+        longitude1 = 180.0;
+        longitude2 = -180.0;
+
+        model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
+        model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
+
+        model1.loadViennaCoefficients(dateTimeComponents);
+        model2.loadViennaCoefficients(dateTimeComponents);
+
+        Assert.assertEquals(model1.getA()[0],           model2.getA()[0],           epsilon);
+        Assert.assertEquals(model1.getA()[1],           model2.getA()[1],           epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
+
+        // Test longitude = 0° and longitude = 360°
+        longitude1 = 0.0;
+        longitude2 = 360.0;
+
+        model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
+        model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
+
+        model1.loadViennaCoefficients(dateTimeComponents);
+        model2.loadViennaCoefficients(dateTimeComponents);
+
+        Assert.assertEquals(model1.getA()[0],           model2.getA()[0],           epsilon);
+        Assert.assertEquals(model1.getA()[1],           model2.getA()[1],           epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
+        Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
+
     }
 
     @Test