diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp
index 21a99e3c1686b769a28a83e0666bce52476b9fe0..336fd125563579490a66d9107138c12f0fa5ca47 100644
--- a/src/fix_enforce2d.cpp
+++ b/src/fix_enforce2d.cpp
@@ -66,12 +66,21 @@ void FixEnforce2D::init()
     if (modify->fix[i]->enforce2d_flag) nfixlist++;
 
   if (nfixlist) {
+    int myindex = -1;
     delete [] flist;
     flist = new Fix*[nfixlist];
     nfixlist = 0;
     for (int i = 0; i < modify->nfix; i++) {
-      if (modify->fix[i]->enforce2d_flag) 
-        flist[nfixlist++] = modify->fix[i];
+      if (modify->fix[i]->enforce2d_flag) {
+        if (myindex < 0)
+          flist[nfixlist++] = modify->fix[i];
+        else {
+          char msg[256];
+          sprintf(msg,"Fix enforce2d must be defined after fix %s",modify->fix[i]->style);
+          error->all(FLERR,msg);
+        }
+      }
+      if (modify->fix[i] == this) myindex = i;
     }
   }
 }