What I like to do for my animations is track a "start time". Then the animation doesn't get updated at all. Instead, when I actually draw the animation, I calculate the appropriate frame by the difference in time.
In order to pause the animation, you would need to increment the "start time" by the same difference in time that the game time has changed by so that the frame doesn't change.
Or else track a "pause time" point and apply the difference in time from then to now into your frame calculation (effectively removing that amount of time). You could also track an "running offset" instead which would build up over time as the animation pauses and unpauses. Its purpose would be to offset the calculation for the current frame by how long the animation has been paused since starting. The latter is perhaps more graceful and truthful because it doesn't need to tamper with the start time (which probably doesn't matter, but might still be interesting to preserve).
The key to making something like this easy is writing modular, encapsulated code. The animation logic and state should be separated from the rest of your game. Then it is easy to think about the problem in just that context ignoring the rest of software entirely. If you write sloppy software full of global state and inlining everything then it becomes very easy to overwhelm your brain and get frustrated with yourself when it becomes too much to handle and you can't keep things straight in your head.
Start with an animation struct (or class in C++) and appropriate functions/methods to interact with it. You can use my demo library for Allegro 4 as inspiration if you want. Once you have the basic state and logic defined you can think about how pausing the animation would affect the underlying attributes of an animation, and come up with ideas how you can solve the problem so that the animation will work the way you need it to.
With the animation code separate like this you can even write a test program in isolation that does nothing other than run an animation and test the pausing effect. This will cut out the rest of the game and let you focus on a tiny problem at a time.