Column indices are never changed. They are in the same order in which you created columns. If a column was moved, its index remain the same, but you can read its new position on the screen with the ColPos property. This property is used to move the column from code.
However, instead of writing your own code to save/restore column positions, why don't use the LayoutCol property for that? It allows you to implement what you need in one statement.