Grapple cable keeps getting longer (possible rounding error?)

I’ve been working for a while on getting a swinging grapple mechanic implemented into a third person project. After learning that the cable component doesn’t enforce its own tension (this should probably be a feature), I realized that I’d have to code the physics to represent tension myself. With some help from some strangers on the internet, I was able to get the equal and opposite force applied to the character using AddImpulse whenever my character’s distance from the grapple point is greater than or equal to <desired cable length>, it applies that force. However, probably due to rounding, the cable will average out to get longer every frame. In only a few seconds, my character’s cable will grow longer by (the in-game equivalent of) a foot or so. This is obviously undesirable. I tried multiplying the impulse by something small like 1.01, which was imperceptible, and then I tried raising the value to something a little larger, like 1.2. As that multiplier gets larger, rather than preventing the cable from growing larger, it just adds a “bounce” effect to hitting the full length of the cable. Just today, I tried using SetActorLocation to <desired cable length> away from the grapple point and then adding the impulse, but instead, it looks like a god is just continuously dropping my character, and most of the swinging motion from the tension physics is lost (I also tried adding the impulse and then setting the actor location, but it had the exact same effect). I’m just about at wit’s end. Does anyone have any idea how that might help me out?

This is what my graph looks like without the SetActorLocation logic. e5cd8eecc4636a7f5f75526d59ff2a826795cd1a.jpeg