with upper limit, make upper