There's no builtin function to do so, but you can perhaps produce a series of buffers and look at how they interact with the original data to determine an approximation for both minimum and maximum width. Specifically, with border line L and area A: * for minimum width, compute a series of buffers of L of increasing sizes (perhaps take the average width W you already found, then use W/10, 2*W/10, 3*W/10, ..., W  easy to do using CALL ValueSequence(...) in 9), intersect each buffer with the area A, and look at the number of branches in the result  the moment the number of branches in the result becomes greater than the number of branches in A (one or more the branches got split), this is an approximation for the minimum width; * for maximum width, compute a similar series of buffers of L of increasing sizes (but go up from average width W to, say, radius of the common enclosing circle), intersect each buffer with the area A and look when the result is going to become empty (the buffer covers the whole area)  this is an approximation of the maximum width. This all is pretty computationally intensive, but should work for reasonable data sizes. Maybe there's an easier way.
