For something to sway you need to lerp
using an amount that ping-pongs similar to Unity's Mathf.PingPong.
Here's a script that has a custom ping pong method.
export var number : float
export var pingpong_amount : float
func _process(delta):
translation.lerp(start, end, ping_pong(number, pingpong_amount))
number += delta
func ping_pong(number, pingpong):
var length = 2*pingpong
var value = number
while value > length:
value -= length
if value > pingpong:
return pingpong-(value-pingpong)
else:
return value