The behaviour inside this ```if``` block is not described in the docstring.
Wouldn't we expect to get something returned in this case?
Perhaps just fixing lower to ```min(bounds)``` and upper to ```max(bounds)```?
Returning ```[]``` seems unexpected.
Also, it might be clearer to explicitly state ```new_bounds = []```.