}
 }
 
+if { [info exists rel_tol] } {
+   puts "\nChecking triangulation area (triarea command)..."
+   set rel_err [expr abs([CheckTriArea result $area_eps])]
+   if { $rel_err > $rel_tol } {
+      puts "Error   : area by triangles differs from the actual area by $rel_err %"
+   } else {
+      if { $rel_tol > 1 && $rel_tol < 100 } {
+        puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
+      }
+   }
+}
+
 if { [isdraw result] } {
     if { [info exists 2dviewer] } {
        clear
 
--- /dev/null
+puts "================"
+puts "OCC23512"
+puts "================"
+puts ""
+#######################################################################################
+# Incorrect triangulation on revolution shape
+######################################################################################
+
+set BugNumber OCC23512
+
+restore [locate_data_file bug23512_rev_bad_shading.brep] result
+
+vinit
+tclean result
+
+vsetdispmode 1
+vdisplay result
+vaxo
+vfit
+
+set nb_v_good 6
+set nb_e_good 14
+set nb_w_good 8
+set nb_f_good 7
+set nb_sh_good 1
+set nb_sol_good 1
+set nb_compsol_good 0
+set nb_compound_good 0
+set nb_shape_good 37
+
+# relative tolerance (%)
+set rel_tol 1
+set area_eps 0
+
+set only_screen 1
 
--- /dev/null
+puts "================"
+puts "OCC23512"
+puts "================"
+puts ""
+#######################################################################################
+# Incorrect triangulation on revolution shape
+######################################################################################
+
+set BugNumber OCC23512
+
+restore [locate_data_file bug23512_rev_bad_shading.brep] result
+
+vinit
+tclean result
+
+incmesh result 0.000001
+
+vsetdispmode 1
+vdisplay result
+vaxo
+vfit
+
+set nb_v_good 6
+set nb_e_good 14
+set nb_w_good 8
+set nb_f_good 7
+set nb_sh_good 1
+set nb_sol_good 1
+set nb_compsol_good 0
+set nb_compound_good 0
+set nb_shape_good 37
+
+# relative tolerance (%)
+set rel_tol 1
+set area_eps 0
+
+set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1
 
 # relative tolerance (%)
 set rel_tol 1
 set area_eps 0
-#
-puts "\nChecking triangulation area (triarea command)..."
-set rel_err [expr abs([CheckTriArea result $area_eps])]
-if { $rel_err > $rel_tol } {
-   puts "Error   : area by triangles differs from the actual area by $rel_err %"
-} else {
-   if { $rel_tol > 1 && $rel_tol < 100 } {
-      puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
-   }
-}
 
 set only_screen 1