dsyevx.f line 505
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
IMAX should not be set to INFO.
It is always = M
Also the call to CALL DSTEIN may clobber info.
dsygvx.f:418
IF( INFO.GT.0 )
$ M = INFO - 1
M is set properly in DSYEVX no need to do this
dsyevr.f:590 No need to set M=N, it should be set by DSTEBZ
IF( INFO.EQ.0 ) THEN
* Everything worked. Skip DSTEBZ/DSTEIN. IWORK(:) are
* undefined.
M = N
dsyevr.f:633
IF( INFO.EQ.0 ) THEN
IMAX = M
ELSE
IMAX = INFO - 1
END IF
also incorrect IMAX & INFO
there are many similar places in Lapack

