diff --git a/mpcdf_common.py b/mpcdf_common.py
index aa9d161311f02e4c299a7ee1388ce5f433227c4e..a0269802541d4ac638c400691a462a4d9cd8fd69 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -29,6 +29,14 @@ mpi_parallel_studio = {value["impi"]: dict({"ps": key}, **value) for key, value
 compiler_parallel_studio = {value["compiler"]: dict({"ps": key}, **value) for key, value in intel_parallel_studio.items()}
 
 
+def valid_pgi_mpi(pgi, mpi):
+    if "impi" not in mpi:
+        return False
+    if "2017" in mpi:
+        return False
+    return True
+
+
 def valid_mpi(compiler, mpi):
     """
     It might be possible to use Intel MPI libararies and compilers from
@@ -40,6 +48,8 @@ def valid_mpi(compiler, mpi):
     """
     if compiler.startswith("intel") and mpi.startswith("impi"):
         return mpi == compiler_parallel_studio[compiler]["impi"]
+    if compiler.startswith("pgi"):
+        return valid_pgi_mpi(compiler, mpi)
     else:
         return True
 
@@ -291,7 +301,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
         if flag == "cuda_mpi":
             for cuda, mpi, compiler in product(actual_cudas(), actual_mpis(), all_compilers):
                 if valid_cuda(cuda, compiler) and valid_mpi(compiler, mpi):
-                        enable(cuda + "_" + mpi + "_" + compiler)
+                    enable(cuda + "_" + mpi + "_" + compiler)
 
         if flag == "pgi":
             for pgi in actual_pgis():
@@ -299,7 +309,8 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
 
         if flag == "pgi_mpi":
             for mpi, pgi in product(actual_mpis(), actual_pgis()):
-                enable(mpi + "_" + pgi)
+                if valid_pgi_mpi(pgi, mpi):
+                    enable(mpi + "_" + pgi)
 
     if len(build.getchildren()) > 0:
         build.getchildren()[-1].tail = "\n  "