Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision 0b2dd2f548baf71d7598b065038512ed8918160d)
+++ src/tesselation.cpp	(revision 125b3c03d0820c4f3bacd2d869f20d763758e94b)
@@ -879,5 +879,4 @@
 CandidateForTesselation::CandidateForTesselation (TesselPoint *candidate, BoundaryLineSet* line, Vector OptCandidateCenter, Vector OtherOptCandidateCenter) :
     BaseLine(line),
-    IsDegenerated(false),
     ShortestAngle(2.*M_PI),
     OtherShortestAngle(2.*M_PI)
@@ -2781,8 +2780,6 @@
   double otherradius;
   double alpha, Otheralpha; // angles (i.e. parameter for the circle).
-  bool IsDegenerated;
   int N[NDIM], Nlower[NDIM], Nupper[NDIM];
   TesselPoint *Candidate = NULL;
-  TesselPoint *CandidateTriangle[3];
 
   Log() << Verbose(1) << "INFO: NormalVector of BaseTriangle is " << NormalVector << "." << endl;
@@ -2799,7 +2796,4 @@
   RelativeOldSphereCenter.CopyVector(&OldSphereCenter);
   RelativeOldSphereCenter.SubtractVector(&CircleCenter);
-
-  CandidateTriangle[0] = CandidateLine.BaseLine->endpoints[0]->node;
-  CandidateTriangle[1] = CandidateLine.BaseLine->endpoints[1]->node;
 
   // calculate squared radius TesselPoint *ThirdNode,f circle
@@ -2859,5 +2853,5 @@
                   Log() << Verbose(1) << "INFO: NewPlaneCenter is " << NewPlaneCenter << "." << endl;
 
-                  if ((NewNormalVector.MakeNormalVector(CandidateLine.BaseLine->endpoints[0]->node->node, CandidateLine.BaseLine->endpoints[1]->node->node, Candidate->node))
+                  if (NewNormalVector.MakeNormalVector(CandidateLine.BaseLine->endpoints[0]->node->node, CandidateLine.BaseLine->endpoints[1]->node->node, Candidate->node)
                   && (fabs(NewNormalVector.NormSquared()) > HULLEPSILON)
                   ) {
@@ -2889,77 +2883,35 @@
                       alpha = min(alpha, Otheralpha);
 
-                      CandidateTriangle[2] = Candidate;
-                      // the idea of the IsDegenerated flag is not to put a penalty on degenerated triangles, but to push them to the
-                      // very end of the Tesselation::OpenLines list.
-                      IsDegenerated = (CheckPresenceOfTriangle(CandidateTriangle) >= 3);
-                      if (!IsDegenerated && CandidateLine.IsDegenerated) {  // if current is not, but old one was, comparison would be unfair
-                        // if there is a better candidate, drop the current list and add the new candidate
-                        // otherwise ignore the new candidate and keep the list
-                        if (CandidateLine.ShortestAngle-2.*M_PI > (alpha - HULLEPSILON)) {
-                          if (fabs(alpha - Otheralpha) > MYEPSILON) {
-                            CandidateLine.OptCenter.CopyVector(&NewSphereCenter);
-                            CandidateLine.OtherOptCenter.CopyVector(&OtherNewSphereCenter);
-                          } else {
-                            CandidateLine.OptCenter.CopyVector(&OtherNewSphereCenter);
-                            CandidateLine.OtherOptCenter.CopyVector(&NewSphereCenter);
-                          }
-                          // if there is an equal candidate, add it to the list without clearing the list
-                          if ((CandidateLine.ShortestAngle-2.*M_PI - HULLEPSILON) < alpha) {
-                            CandidateLine.pointlist.push_back(Candidate);
-                            Log() << Verbose(0) << "ACCEPT: We have found an equally good candidate: " << *(Candidate) << " with "
-                              << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
-                          } else {
-                            // remove all candidates from the list and then the list itself
-                            CandidateLine.pointlist.clear();
-                            CandidateLine.pointlist.push_back(Candidate);
-                            Log() << Verbose(0) << "ACCEPT: We have found a better candidate: " << *(Candidate) << " with "
-                              << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
-                          }
-                          CandidateLine.ShortestAngle = alpha;
-                          CandidateLine.IsDegenerated = IsDegenerated;
-                          if (IsDegenerated)
-                            CandidateLine.ShortestAngle += 2.*M_PI;
-                          Log() << Verbose(0) << "INFO: There are " << CandidateLine.pointlist.size() << " candidates in the list now." << endl;
+                      // if there is a better candidate, drop the current list and add the new candidate
+                      // otherwise ignore the new candidate and keep the list
+                      if (CandidateLine.ShortestAngle > (alpha - HULLEPSILON)) {
+                        if (fabs(alpha - Otheralpha) > MYEPSILON) {
+                          CandidateLine.OptCenter.CopyVector(&NewSphereCenter);
+                          CandidateLine.OtherOptCenter.CopyVector(&OtherNewSphereCenter);
                         } else {
-                          if ((Candidate != NULL) && (CandidateLine.pointlist.begin() != CandidateLine.pointlist.end())) {
-                            Log() << Verbose(1) << "REJECT: Old candidate " << *(Candidate) << " with " << CandidateLine.ShortestAngle << " is better than new one " << *Candidate << " with " << alpha << " ." << endl;
-                          } else {
-                            Log() << Verbose(1) << "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected." << endl;
-                          }
+                          CandidateLine.OptCenter.CopyVector(&OtherNewSphereCenter);
+                          CandidateLine.OtherOptCenter.CopyVector(&NewSphereCenter);
                         }
+                        // if there is an equal candidate, add it to the list without clearing the list
+                        if ((CandidateLine.ShortestAngle - HULLEPSILON) < alpha) {
+                          CandidateLine.pointlist.push_back(Candidate);
+                          Log() << Verbose(0) << "ACCEPT: We have found an equally good candidate: " << *(Candidate) << " with "
+                            << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
+                        } else {
+                          // remove all candidates from the list and then the list itself
+                          CandidateLine.pointlist.clear();
+                          CandidateLine.pointlist.push_back(Candidate);
+                          Log() << Verbose(0) << "ACCEPT: We have found a better candidate: " << *(Candidate) << " with "
+                            << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
+                        }
+                        CandidateLine.ShortestAngle = alpha;
+                        Log() << Verbose(0) << "INFO: There are " << CandidateLine.pointlist.size() << " candidates in the list now." << endl;
                       } else {
-                        // if there is a better candidate, drop the current list and add the new candidate
-                        // otherwise ignore the new candidate and keep the list
-                        if (CandidateLine.ShortestAngle > (alpha - HULLEPSILON)) {
-                          if (fabs(alpha - Otheralpha) > MYEPSILON) {
-                            CandidateLine.OptCenter.CopyVector(&NewSphereCenter);
-                            CandidateLine.OtherOptCenter.CopyVector(&OtherNewSphereCenter);
-                          } else {
-                            CandidateLine.OptCenter.CopyVector(&OtherNewSphereCenter);
-                            CandidateLine.OtherOptCenter.CopyVector(&NewSphereCenter);
-                          }
-                          // if there is an equal candidate, add it to the list without clearing the list
-                          if ((CandidateLine.ShortestAngle - HULLEPSILON) < alpha) {
-                            CandidateLine.pointlist.push_back(Candidate);
-                            Log() << Verbose(0) << "ACCEPT: We have found an equally good candidate: " << *(Candidate) << " with "
-                              << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
-                          } else {
-                            // remove all candidates from the list and then the list itself
-                            CandidateLine.pointlist.clear();
-                            CandidateLine.pointlist.push_back(Candidate);
-                            Log() << Verbose(0) << "ACCEPT: We have found a better candidate: " << *(Candidate) << " with "
-                              << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << "." << endl;
-                          }
-                          CandidateLine.ShortestAngle = alpha;
-                          Log() << Verbose(0) << "INFO: There are " << CandidateLine.pointlist.size() << " candidates in the list now." << endl;
+                        if ((Candidate != NULL) && (CandidateLine.pointlist.begin() != CandidateLine.pointlist.end())) {
+                          Log() << Verbose(1) << "REJECT: Old candidate " << *(Candidate) << " with " << CandidateLine.ShortestAngle << " is better than new one " << *Candidate << " with " << alpha << " ." << endl;
                         } else {
-                          if ((Candidate != NULL) && (CandidateLine.pointlist.begin() != CandidateLine.pointlist.end())) {
-                            Log() << Verbose(1) << "REJECT: Old candidate " << *(Candidate) << " with " << CandidateLine.ShortestAngle << " is better than new one " << *Candidate << " with " << alpha << " ." << endl;
-                          } else {
-                            Log() << Verbose(1) << "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected." << endl;
-                          }
+                          Log() << Verbose(1) << "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected." << endl;
                         }
                       }
-
                     } else {
                       Log() << Verbose(1) << "REJECT: NewSphereCenter " << NewSphereCenter << " for " << *Candidate << " is too far away: " << radius << "." << endl;
@@ -4288,8 +4240,18 @@
     TriangleSet *T = (*PolygonRunner)->GetAllContainedTrianglesFromEndpoints();
 
+    // check whether number is bigger than 2, otherwise it's just a simply degenerated one and nothing to do.
     if (T->size() == 2) {
       Log() << Verbose(1) << " Skipping degenerated polygon, is just a (already simply degenerated) triangle." << endl;
       delete(T);
       continue;
+    }
+
+    // check whether number is even
+    // If this case occurs, we have to think about it!
+    // The Problem is probably due to two degenerated polygons being connected by a bridging, non-degenerated polygon, as somehow one node has
+    // connections to either polygon ...
+    if (T->size() % 2 != 0) {
+      eLog() << Verbose(0) << " degenerated polygon contains an odd number of triangles, probably contains bridging non-degenerated ones, too!" << endl;
+      performCriticalExit();
     }
 
Index: src/tesselation.hpp
===================================================================
--- src/tesselation.hpp	(revision 0b2dd2f548baf71d7598b065038512ed8918160d)
+++ src/tesselation.hpp	(revision 125b3c03d0820c4f3bacd2d869f20d763758e94b)
@@ -246,5 +246,4 @@
   Vector OptCenter;
   Vector OtherOptCenter;
-  bool IsDegenerated;
   double ShortestAngle;
   double OtherShortestAngle;
