correct Moore diagonalization