Based on your description one or more edges have kinks. I assume by “bad surface” you mean not what you want rather than not a valid solution. A surface (actually a polysurface) with a crease is a valid solution for a surface which needs to have one or more edges with kinks.
One way to create a set of surfaces without a crease which matches the kinked edge curve(s) is to first create the polysurface with the crease. Then use VariableFilletSrf to add a fillet along the crease. The radius of the fillet must be set to 0 (zero) at the end(s) of the crease adjacent to the kinks in the edge curve(s). If needed use the AddHandle option in VariableFilletSrf to add control of the fillet radius along the interior of the fillet. The initial surfaces and the fillet well be tangent (G1) continuous.
Sometimes automatic trimming of the original surface by the fillet does not work. In that case you will need to create temporary trimming curves on the original surface. Use Pull to pull the edges of the fillet onto the original surfaces. Use the resulting curves to trim the original surface.