I may be doing something silly here but can't for the life of me work it out.
I have a 3D NavigationAgent sat on a NavigationRegion3D. That agent needs to plot a path around a cube (using a baked NavMesh) to a point on the other side. The setup looks like this:

When run, the path is plotted correctly (there is an invisible marker3D providing the target Vector on the other side of the cube) BUT, the Agent only travels to the first NavPoint and then stops.

My movement code is as follows:
func _physics_process(delta):
var current_location = global_position
var next_location = nav.get_next_path_position()
print(next_location)
var new_velocity = (next_location - current_location).normalized() * SPEED
velocity = new_velocity
move_and_slide()`
You can see I am monitoring the return value of nav.get_next_path_position(). However, strangely, it never changes and never seems to update; even when the agent reaches the first path index and stops. It's as if it doesn't think it's reached the first nav point and so get_next_path_position() just keeps returning the Vector of the first nav point.
FYI. is_target_reachable remains true and is_navigation_finished remains false.
PS. The target position is set elsewhere and remains the same throughout.
Any ideas?