It's not fish science
Making creatures swim like fish is suprisingly difficult. It leads right into the territory of non-holonomic locomotion. Equations with lots of funny greek symbols.

The reason behind all this is that fish are much better at swimming forward than in any other direction. They also need some velocity to make a turn. In that sense fish are like higher dimensional cars. Now stir some bumping into each other and colliding with terrain into the mix. Add a pinch of non-uniform drag and two scoops of underwater currents. Now you got yourself a real problem at hand. Enjoy!