Index: src/boundary.cpp
===================================================================
--- src/boundary.cpp	(revision cb85c2e23c34bb8b96ceb385c790c6a65fb325c1)
+++ src/boundary.cpp	(revision c5805a6ee89c1ab92cf6544d5df6bd3f5fc5296a)
@@ -819,14 +819,15 @@
   map<molecule *, LinkedCell *> LCList;
 
-  for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++) {
-    Log() << Verbose(1) << "Pre-creating linked cell lists for molecule " << *ListRunner << "." << endl;
-    LCList[(*ListRunner)] = new LinkedCell((*ListRunner), 10.); // get linked cell list
-    Log() << Verbose(1) << "Pre-creating tesselation for molecule " << *ListRunner << "." << endl;
-    TesselStruct[(*ListRunner)] = NULL;
-    FindNonConvexBorder((*ListRunner), TesselStruct[(*ListRunner)], (const LinkedCell *&)LCList[(*ListRunner)], 5., NULL);
-  }
+  for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++)
+    if ((*ListRunner)->AtomCount > 0) {
+      Log() << Verbose(1) << "Pre-creating linked cell lists for molecule " << *ListRunner << "." << endl;
+      LCList[(*ListRunner)] = new LinkedCell((*ListRunner), 10.); // get linked cell list
+      Log() << Verbose(1) << "Pre-creating tesselation for molecule " << *ListRunner << "." << endl;
+      TesselStruct[(*ListRunner)] = NULL;
+      FindNonConvexBorder((*ListRunner), TesselStruct[(*ListRunner)], (const LinkedCell *&)LCList[(*ListRunner)], 5., NULL);
+    }
 
   // Center filler at origin
-  filler->CenterOrigin();
+  filler->CenterEdge(&Inserter);
   filler->Center.Zero();
 
@@ -845,7 +846,7 @@
 
   // go over [0,1]^3 filler grid
-  for (n[0] = 0; n[0] <= N[0]; n[0]++)
-    for (n[1] = 0; n[1] <= N[1]; n[1]++)
-      for (n[2] = 0; n[2] <= N[2]; n[2]++) {
+  for (n[0] = 0; n[0] < N[0]; n[0]++)
+    for (n[1] = 0; n[1] < N[1]; n[1]++)
+      for (n[2] = 0; n[2] < N[2]; n[2]++) {
         // calculate position of current grid vector in untransformed box
         CurrentPosition.Init((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]);
@@ -857,4 +858,6 @@
 
         // go through all atoms
+        for (int i=0;i<filler->AtomCount;i++)
+          CopyAtoms[i] = NULL;
         Walker = filler->start;
         while (Walker->next != filler->end) {
@@ -900,8 +903,5 @@
           for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++) {
             // get linked cell list
-            if (TesselStruct[(*ListRunner)] == NULL) {
-              eLog() << Verbose(0) << "TesselStruct of " << (*ListRunner) << " is NULL. Didn't we pre-create it?" << endl;
-              FillIt = false;
-            } else {
+            if (TesselStruct[(*ListRunner)] != NULL) {
               const double distance = (TesselStruct[(*ListRunner)]->GetDistanceToSurface(Inserter, LCList[(*ListRunner)]));
               FillIt = FillIt && (distance > boundary) && ((MaxDistance < 0) || (MaxDistance > distance));
@@ -919,5 +919,5 @@
             Log() << Verbose(1) << "INFO: Position at " << Inserter << " is inner point, within boundary or outside of MaxDistance." << endl;
             CopyAtoms[Walker->nr] = NULL;
-            break;
+            continue;
           }
 
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision cb85c2e23c34bb8b96ceb385c790c6a65fb325c1)
+++ src/config.cpp	(revision c5805a6ee89c1ab92cf6544d5df6bd3f5fc5296a)
@@ -689,6 +689,6 @@
   ParseForParameter(verbose,FileBuffer,"MaxTypes", 0, 1, 1, int_type, &(MaxTypes), 1, critical);
   if (MaxTypes == 0) {
-    eLog() << Verbose(0) << "There are no atoms according to MaxTypes in this config file." << endl;
-    performCriticalExit();
+    eLog() << Verbose(1) << "There are no atoms according to MaxTypes in this config file." << endl;
+    //performCriticalExit();
   } else {
     // prescan number of ions per type
