Hi @melantonuky
I had a quick look in your file.
I found out that in decisions inside the SAC you used a lot the function P1.Elevation.
This function returns the absolute elevation of the Point, from the 0.0 (the mean sea level).
I think you have to use the function P1.DistanceToSurface(YourSurface). This function returns positive if P1 is above and negative value if P1 is below the surface.
Because you compare the value with a maxfill (or maxcut) the you have to use also the Math.ABS(YourValue), to return always the absolute value (always positive).
So, replace your code P1.Elevation with Math.ABS(P1.DistanceToSurface(EG)).
With this you will solve the problems with the connection of points with same elevations on the bench, but will create other connection problems in the bottom (see the attachment). These problems i think you can solve by working more, by assigning the proper codes, because i did not go deep your subassembly to check your codes.
Also i found out in the beginning of your subbassembly, that you add AP1 and AP2 to see if you are in a cut or fill. For this checking you can also use the DistanceToSurface function only with one point.
Regards