Why does Gaussian ignore the opt=maxcycles keyword for optimizations?

I have been using both Gaussian09 and Gaussian16 recently to optimize some metal complexes. The Gaussian manual (for both versions) indicates that the maximum number of steps in a geometry optimization can be set by the keyword maxcycles in opt. However, for every optimization I have done, Gaussian seems to consistently ignore the value set by maxcycles and sets its own max. number of steps internally.

Most of the calculations I did have this route line:

# opt=maxcycles=200 freq b3lyp/sdd geom=connectivity


What I have noticed is that when I am minimizing the geometry, Gaussian sets maximum number of steps to 100 (with the maxcycles=200, or to 50 if the maxcycles keyword is omitted. For transition state optimizations, the max. number of steps is set to 145.

I have seen some discussions regarding this in various forums and mailing lists, but I have found no solution. I have also seen some posts claiming it is a bug, but it keeps happening in Gaussian16 too.

So, my question is— why does Gaussian ignore the maxcycles keyword and how can I fix it?

This requires an additional IOP to do. It seems that Gaussian sets a separate lower and upper bound on the number of optimization steps that will be performed based on the number of coordinates and opt(maxcycle=N) can only set the max value within this range, but not any higher. IOP(1/152=N) changes this internal max value, allowing maxcycle to be raised as well. So you should be able to use # opt(maxcycles=200) iop(1/152=200) freq b3lyp/sdd geom=connectivity to increase the allowed number of steps.