diff --git a/src/IntCurve/IntCurve_IntPolyPolyGen.gxx b/src/IntCurve/IntCurve_IntPolyPolyGen.gxx
index 6675efbb85..96dbc6243c 100644
--- a/src/IntCurve/IntCurve_IntPolyPolyGen.gxx
+++ b/src/IntCurve/IntCurve_IntPolyPolyGen.gxx
@@ -388,9 +388,6 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
       }
     }
 
-    Standard_Integer Nelarg=(Poly1.NbSegments()/20);
-    if(Nelarg<2) Nelarg=2;
-
     for(Standard_Integer sp=1; sp <= Nbsp; sp++) {
       if(TriIndex[sp]>0) { 
 	      const Intf_SectionPoint& SPnt = InterPP.PntValue(TriIndex[sp]);
@@ -401,20 +398,7 @@ void IntCurve_IntPolyPolyGen::Perform( const TheCurve& C1
 	      if(Abs(SegIndex1-SegIndex2)>1) { 
 	  
 	        EIP.Perform(Poly1,Poly1,SegIndex1,SegIndex2,ParamOn1,ParamOn2);
-	        if(EIP.NbRoots()==0) {
-	          //-- All neighbor segments are removed 
-	          for(Standard_Integer k=sp+1;k<=Nbsp;k++) { 
-	            Standard_Integer kk=TriIndex[k];
-	            // --- avoid negative indices as well as in outer done
-	            if( kk > 0 ) {
-		            if(   Abs(SegIndex1-PtrSegIndex1[kk])< Nelarg
-		               && Abs(SegIndex2-PtrSegIndex2[kk])< Nelarg) { 
-		              TriIndex[k]=-k;
-		            }
-              }
-	          }
-	        }	  
-	        else if(EIP.NbRoots()>=1) { 
+	        if(EIP.NbRoots()>=1) { 
 	          //--------------------------------------------------------------------
 	          //-- It is checked if the found point is a root
 	          //--------------------------------------------------------------------
diff --git a/tests/bugs/modalg_8/bug32915 b/tests/bugs/modalg_8/bug32915
new file mode 100644
index 0000000000..a6ffebb42b
--- /dev/null
+++ b/tests/bugs/modalg_8/bug32915
@@ -0,0 +1,18 @@
+puts "================================================="
+puts "0032915: Geom2dAPI_InterCurveCurve, The algorithm lost an intersection point."
+puts "================================================="
+puts ""
+
+restore [locate_data_file bug32915.brep] e
+mkcurve c3d e
+plane p 0 0 1
+project c2d c3d p
+
+set inter [2dintersect c2d]
+if {[regexp -all "Intersection point" $inter] != 29} {
+  puts "Error: Wrong number of self-intersections (expected 29 points)."
+}
+
+v2d
+2dfit
+checkview -screenshot -2d -path ${imagedir}/${test_image}.png
diff --git a/tests/de/step_4/I1 b/tests/de/step_4/I1
index 97c04743c8..dd5aad33ad 100644
--- a/tests/de/step_4/I1
+++ b/tests/de/step_4/I1
@@ -1,4 +1,5 @@
 # !!!! This file is generated automatically, do not edit manually! See end script
+puts "TODO ALL: Error : 1 differences with reference data found"
 
 set filename PRO7187.stp
 
diff --git a/tests/heal/data/advanced/ZA5 b/tests/heal/data/advanced/ZA5
index 3ded5f2d5c..6f79cc914b 100644
--- a/tests/heal/data/advanced/ZA5
+++ b/tests/heal/data/advanced/ZA5
@@ -1,5 +1,5 @@
 if {[string compare $command "SplitAngle"] == 0 } {
-    puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_4 "
+    puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_"
 }
 restore [locate_data_file SEB-1.brep] a
 
diff --git a/tests/heal/data/advanced/ZA6 b/tests/heal/data/advanced/ZA6
index ae6df8112e..86ae5b50c2 100644
--- a/tests/heal/data/advanced/ZA6
+++ b/tests/heal/data/advanced/ZA6
@@ -1,5 +1,5 @@
 if {[string compare $command "SplitAngle"] == 0 } {
-    puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_4 "
+    puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_"
 }
 restore [locate_data_file SEB-1B.brep] a