Are your requested shapes always othogonal like in your pictures? So if that's the case, Convex-Hull-Modified should recognize that new point list and recognize where should new points be inserted between original Convex-Hull point list... I am wondering do you actually need new point list, if you want shapes like you showed... Basically if point and next point at some angle - not 0.0; (/ pi 2.0); pi; (* 3.0 (/ pi 2.0)); (* 2.0 pi); new point should be inserted with coords (list (car p) (cadr nextp))? Is this you are looking for? - Then no need for new sub function, just post process Convex-Hull original point list...