Reverse an animation at any point during the animation loop

I’m currently animating a SKSpriteNode the more “traditional way”:

let atlas = SKTextureAtlas (named: "drone")
var array = [String]()
    
for var i=1; i <= 109; i++ {
    let nameString = String(format: "drone%i", i)  
    array.append(nameString)       
}

var atlasTextures:[SKTexture] = []

for (var i = 0; i < array.count; i++ ) {
    let texture:SKTexture = atlas.textureNamed( array[i] )
    atlasTextures.insert(texture, atIndex:i)
}
    
let atlasAnimation = SKAction.animateWithTextures(atlasTextures, timePerFrame: 1.0/30, resize: true , restore:false )
droneAnimation = SKAction.repeatActionForever(atlasAnimation)
    
droneNode.runAction(droneAnimation!, withKey:"animation")

The player is able to move the sprite by touching the left half of the screen or right half of the screen, depending on which way they want to move the sprite (there are two invisible SKSpriteNodes that act as a left/right gamepad to move the sprite). With that said the sprite can change directions anytime that the player wishes and for the animation to do a full loop it must get through all 109 imgs. So the problem is (drum roll), I need to be able to reserve the sprite on a whelm but when I try to use the more “traditional way” to reserve a sprite like:

droneNode.xScale = droneNode.xScale * -1;

the animation does reserve but it flips the image and it doesn’t work like I need it to. The easiest way to think about this is to imagine the imgs going through the loop [1,2,3,4,5,…38,etc] and as soon as it needs to go the other direction I need it to go 38,37,36,35,…2,1,109,108…etc. until it needs to go the other direction again…

My thoughts on a possible solution: Is there away to keep track of the index of the that the atlasTextures array stops on within the SKAction.animateWithTextures, so I can allow it to go through the imgs natural like, 1,2,3…34,35 but as soon as the player wishes to move in the other direction it would go (35,34…3,2,1,109,108…etc.)?
Could anyone please be my savior here and help? Any advice or possible work around would be much appreciated!

I re-read your post after commenting.

It sounds like your frames look strange when the image is flipped?

Caveat, I have not actually needed to do this and it may not work.

Let’s say you have an array with the frames like this.

let textureArray = [frame0, frame1, frame2, frame3, frame4, frame5, frame6]

And your SKAction to loop it looks like this.

let animation = SKAction.animateWithTextures([textureArray], timePerFrame: 0.1)

I think you might be able to get what you want like this.

let reversedAnimation = SKAction.animateWithTextures([textureArray.reverse()], timePerFrame: 0.1)