--- /dev/null
+puts "=========="
+puts "OCC21507"
+puts "=========="
+puts ""
+############################################################
+# Bug in BOP: bcut produces invalid result without notice
+############################################################
+
+# Demonstrates bug in bcut command
+pload XDE
+
+# Load face
+puts "Loading face"
+restore [locate_data_file bug21507_bcut_bug_face.brep] face
+
+# Make tool - an elliptic cylinder
+puts "Constructing tool"
+ellipse c 10000 0 0 0 1 0 600 300
+mkedge e c
+wire w e
+tcopy w w1
+tcopy w w2
+ttranslate w1 0 5000 0
+ttranslate w2 0 -5000 0
+thrusections tool 1 1 w1 w2
+
+# Check validity of face and tool
+puts "Checking face: [checkshape face]; [lrange [tolerance face] 0 1]"
+puts "Checking tool: [checkshape tool]; [lrange [tolerance tool] 0 1]"
+bopcheck face
+bopcheck tool
+
+# Do cut
+puts "Running bcut"
+bcut result face tool
+
+# Evaluate result by number of faces (bcut)
+set rfaces [explode result f]
+if { [llength $rfaces] != 1 } {
+ puts "Error: [llength $rfaces] faces instead of 1"
+} else {
+ puts "Result is as expected"
+}
+
+# Do the same using cut
+puts "Now running old cut"
+cut rcut face tool
+
+# Evaluate result by number of faces (cut)
+set rcfaces [explode rcut f]
+if { [llength $rcfaces] != 1 } {
+ puts "Error: [llength $rcfaces] faces instead of 1"
+} else {
+ puts "Result is as expected"
+}
+
+set 2dviewer 1