In your first example optimize(200,100,300) you are telling Zorro to step from 100 to 300. Apparently it likes 120 best.

In the second example optimize(200,150,300) you are telling Zorro to step from 150 to 300, so that would mean that 120 is no longer an option. Therefore, it chooses the next most-robust value in that range.

The first value 200 is the "start" value. It uses this value as a best-default when optimizing other parameters. For example, when optimizing a second different parameter, it will use 200 for that first parameter since that is the start value.