Adding gravity to linetrace vectors

Okay, so I’ve been struggling with this line of code for longer than I care to admit. Whenever this loop is executed, it should move the raycast endpoint down. That should allow me to do a quick linetrace with “gravity” reapplied every new subdivision, which is every 500 units. However, when the following loop is executed, only the second linetrace goes lower, every one after it stays on a straight path forward.

float SubdivisionRange = 500;

	for (int32 i = 1; i<10; i++)
	{
	// ONLY FIRST LINE GOES LOWER... WHY?

	if (GetWorld()->LineTraceSingleByChannel(HitResult, Location, End, ECC_WorldStatic, Params))
	{
		FVector NewEnd = HitResult.ImpactPoint; // End the debug line if we hit something
		DrawDebugLine(GetWorld(), Location, NewEnd, FColor::Yellow, true, -1, 0, 10);
	}
	else DrawDebugLine(GetWorld(), Location, End, FColor::Orange, true, -1, 0, 10);

	float DistanceTravelled = (Location - HitResult.ImpactPoint).Size();;

	Location = End;	// Start next line from where we left off
	End = (Location + Rotation.Vector() * SubdivisionRange); // Create new endpoint
	End.Z = End.Z - Gravity; // Add Gravity
}

Here’s two example pics, its hard to see but at the start, the debug line does a slight turn, after which it stays straight forever.

Pic 1
Pic 2