digits multiplexing out of order

Hello all, I am having a problem with multiplexing my shift registers and segment displays. I am creating a sim racing button box/ gear and time indicator. I think I have the logic correct in my code, but the last digit in both of my multiplex's wants to start at the front of the code. I have fixed the printGear() method to display it in the right order, but I want to know if there is a way I can do this without changing my wiring or changing digit pins.

I have double checked my wiring pins according to their respective digits, and there is no problem there. I can shift a number to a digit alone and it will show up correctly, but when I start adding multiple digits while multiplexing, it wants to put the last number first. A Preview, cant see much of the wiring, but g1, g2, and g3 are for the top 3 displays and d1 - d8 are for the bottom displays. all numbers are left to right respectively. The 6 is the last digit, but it is showing up before the - 1 -. Also if you look closely at the code, you can see I have performed an informal fix on the 3 displays at the top of the breadboards. I would eventually like to take out the initial -, but i thought it would help place the last digit in its place. Any help would be greatly appreciated! Here is my Code

but when I start adding multiple digits while multiplexing, it wants to put the last number first.

When you use multiple shift registers, the first number you put in travels into the first shift register. As you put the second number in that pushes the first number to the second shift register and that second number goes into the first shift register. So yes it will put the last number first, that is how it works.

So you either rewire things or swap the order you push things out to the shift register in software.

Include your schematic for further help.