global models: processing of models providing only positive coordinates is wrong
@avaldebe discovered that CI using iris 3.2 shows this error:
```
data_tm5 = pyaerocom.GriddedData: (od550aer, TM5_AP3-CTRL2016)
<iris 'Cube' of atmosphere_optical_thickness_due_to_ambient_aerosol / (1) (time: 12; latitude: 90; longitude: 120)>

    @data_unavail
    def test_GriddedData_longitude(data_tm5):
        """Test if longitudes are defined right"""
        assert str(data_tm5.longitude.units) == "degrees"
    
        lons = data_tm5.longitude.points
>       assert_allclose(lons.min(), -181.5, rtol=TEST_RTOL)
E       AssertionError: 
E       Not equal to tolerance rtol=0.0001, atol=0
E       
E       Mismatched elements: 1 / 1 (100%)
E       Max absolute difference: 3.
E       Max relative difference: 0.01652893
E        x: array(-178.5)
E        y: array(-181.5)

tests/test_griddeddata.py:101: AssertionError
```

looking at 
https://github.com/metno/pyaerocom/blob/27a7dac9d8eb3a695a8a71393b6b33a798063c67/tests/test_griddeddata.py#L100-L102
tells that the longitudes are just wrong. 
original dato from the file shows that this is a model that initially provided the longitudes from 0 to 360 degrees:

```
(base) jang@pc4847:~$ ncdump -v lon /home/jang/MyPyaerocom/testdata-minimal/modeldata/TM5-met2010_CTRL-TEST/renamed/aerocom3_TM5_AP3-CTRL2016_od550aer_Column_2010_monthly.nc

 lon = 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 
    37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 
    73.5, 76.5, 79.5, 82.5, 85.5, 88.5, 91.5, 94.5, 97.5, 100.5, 103.5, 
    106.5, 109.5, 112.5, 115.5, 118.5, 121.5, 124.5, 127.5, 130.5, 133.5, 
    136.5, 139.5, 142.5, 145.5, 148.5, 151.5, 154.5, 157.5, 160.5, 163.5, 
    166.5, 169.5, 172.5, 175.5, 178.5, 181.5, 184.5, 187.5, 190.5, 193.5, 
    196.5, 199.5, 202.5, 205.5, 208.5, 211.5, 214.5, 217.5, 220.5, 223.5, 
    226.5, 229.5, 232.5, 235.5, 238.5, 241.5, 244.5, 247.5, 250.5, 253.5, 
    256.5, 259.5, 262.5, 265.5, 268.5, 271.5, 274.5, 277.5, 280.5, 283.5, 
    286.5, 289.5, 292.5, 295.5, 298.5, 301.5, 304.5, 307.5, 310.5, 313.5, 
    316.5, 319.5, 322.5, 325.5, 328.5, 331.5, 334.5, 337.5, 340.5, 343.5, 
    346.5, 349.5, 352.5, 355.5, 358.5 ;
```

using iris up to 3.1 [iris.cube.Cube.intersection](https://scitools-iris.readthedocs.io/en/stable/generated/api/iris/cube.html?highlight=intersection#iris.cube.Cube.intersection) gives this as a result:
```
>>> new_cube = cubes[0].intersection(longitude=(-180, 180))
>>> new_cube.coord('longitude')
DimCoord(array([-181.5, -178.5, -175.5, -172.5, -169.5, -166.5, -163.5, -160.5,
```
from iris 3.2 this is the result **(the correct one!)**:
```
>>> new_cube = cubes[0].intersection(longitude=(-180, 180))
>>> new_cube.coord('longitude')
<DimCoord: longitude / (degrees)  [-178.5, -175.5, ..., 175.5, 178.5]+bounds  shape(120,)>
```

since these longitudes are used for the colocation, **current results from models not providing negative longitudes are likely wrong** (one longitude index off; additional problems at the upper end).


diff --git a/setup.cfg b/setup.cfg
index d76a8f18..70a0c584 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -73,6 +73,7 @@ test =
     pytest>=6.0
     pytest-dependency
     pytest-cov
+    packaging
 format =
     black==22.1.0
     isort
diff --git a/tests/conftest.py b/tests/conftest.py
index c341540a..560df471 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -4,8 +4,11 @@ import matplotlib
 
 matplotlib.use("Agg")
 
+from importlib import metadata
+
 import numpy as np
 import pytest
+from packaging.version import Version
 
 from pyaerocom import const
 from pyaerocom.access_testdata import AccessTestData
@@ -267,6 +270,15 @@ def coldata():
 TMPDIR = os.path.join(os.path.expanduser("~"), "tmp", "pyatest")
 os.makedirs(TMPDIR, exist_ok=True)
 
+# iris >= 3.2 corrected an error in iris.cube.Cube.intersection
+# see https://github.com/metno/pyaerocom/issues/588
+iris_version = metadata.version("scitools-iris")
+need_iris_32 = pytest.mark.xfail(
+    Version(iris_version) < Version("3.2"),
+    reason=f"results are different with iris {iris_version} < 3.2",
+    strict=True,
+)
+
 
 def pytest_sessionfinish(session, exitstatus):
     print("\n\nBLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
diff --git a/tests/test_colocation.py b/tests/test_colocation.py
index afa3a428..47718927 100644
--- a/tests/test_colocation.py
+++ b/tests/test_colocation.py
@@ -19,7 +19,7 @@ from pyaerocom.colocation import (
 from pyaerocom.io import ReadMscwCtm
 
 from ._conftest_helpers import create_fake_station_data
-from .conftest import TEST_RTOL, data_unavail
+from .conftest import TEST_RTOL, data_unavail, need_iris_32
 
 
 def test__regrid_gridded(data_tm5):
@@ -163,7 +163,7 @@ def test_colocate_gridded_ungridded_new_var(data_tm5, aeronetsunv3lev2_subset):
             0.302636,
             0.234147,
         ),
-        (
+        pytest.param(
             dict(
                 filter_name="WORLD-noMOUNTAINS",
                 regrid_res_deg=30,
@@ -172,7 +172,9 @@ def test_colocate_gridded_ungridded_new_var(data_tm5, aeronetsunv3lev2_subset):
             "monthly",
             (2, 12, 8),
             0.31593,
-            0.1797,
+            # 0.1797,
+            0.169897,
+            marks=[need_iris_32],
         ),
         (
             dict(filter_name="WORLD-noMOUNTAINS", ts_type="yearly"),
diff --git a/tests/test_griddeddata.py b/tests/test_griddeddata.py
index 303e4b9b..6358f2b6 100644
--- a/tests/test_griddeddata.py
+++ b/tests/test_griddeddata.py
@@ -16,8 +16,7 @@ from pyaerocom.exceptions import (
     VariableNotFoundError,
 )
 from pyaerocom.io import ReadGridded
-
-from .conftest import TEST_RTOL, data_unavail
+from tests.conftest import TEST_RTOL, data_unavail, need_iris_32
 
 TESTLATS = [-10, 20]
 TESTLONS = [-120, 69]
@@ -93,13 +92,13 @@ def test_basic_properties(data_tm5):
 
 
 @data_unavail
+@need_iris_32
 def test_GriddedData_longitude(data_tm5):
     """Test if longitudes are defined right"""
     assert str(data_tm5.longitude.units) == "degrees"
 
     lons = data_tm5.longitude.points
-    assert_allclose(lons.min(), -181.5, rtol=TEST_RTOL)
-    assert_allclose(lons.max(), 175.5, rtol=TEST_RTOL)
+    assert (lons.min(), lons.max()) == (-178.5, 178.5)
 
 
 @data_unavail
['tests/test_colocation.py', 'tests/test_griddeddata.py', 'setup.cfg', 'tests/conftest.py']