BRepExtrema_ShapeProximity does not return all faces within tolerance

Hello OCC users,

I am using BRepExtrema_ShapeProximity to check all intersecting faces between 2 TopoDS_Solid entities. However, I realized that not all faces within the proximity tolerance are left out. I have confirmed that some left-out faces are within the tolerance by calculating the distance using BRepExtrema_DistShapeShape(). These faces are certainly intersecting even based on visual check. Below is the code I used for this procedure. Please let me know if there is anything I missed or if there are certain input format for BRepExtrema_ShapeProximity to work properly. All I am trying to get are the collections of intersecting faces between the 2 solids, so if there are any other OCC functions please let me know as well. Appreciated it!

TopoDS_Solid solid1;
// some code to read solid1 from stp file
...
BRepMesh_IncrementalMesh mesher1 = BRepMesh_IncrementalMesh(solid1, tolerance);
mesher1.Perform();

TopoDS_Solid solid2;
// some code to read solid2 from stp file
...
BRepMesh_IncrementalMesh mesher2 = BRepMesh_IncrementalMesh(solid2, tolerance);
mesher2.Perform();

vector intersectionSolid1;
vector intersectionSolid2;

BRepExtrema_ShapeProximity proximityChecker(solid1, solid2, 2*tolerance);
proximityChecker.Perform();
if (proximityChecker.IsDone()) {
for (BRepExtrema_MapOfIntegerPackedMapOfInteger::Iterator anIt1(proximityChecker.OverlapSubShapes1()); anIt1.More(); anIt1.Next()) {

const TopoDS_Shape& aFace1 = proximityChecker.GetSubShape1(anIt1.Key());
TopoDS_Shape F1 = aFace1;
intersectionSolid1.push_back(F1);
}

for (BRepExtrema_MapOfIntegerPackedMapOfInteger::Iterator anIt2(proximityChecker.OverlapSubShapes2()); anIt2.More(); anIt2.Next()) {

const TopoDS_Shape& aFace2 = proximityChecker.GetSubShape2(anIt2.Key());
TopoDS_Shape F2 = aFace2;
intersectionSolid2.push_back(F2);
}
}