Simple problem with Sprint Script

Hi! =)
I have this script made by quill18 and i added it the function to be able of Sprint …
But when i jump and release the shift button the character still running, i have to press and release the button again to the character start to walk normally … How would you solve that?
Also How would you implement the ability of “Crouch”
Thanks for your time! =)
The code:
using UnityEngine;
using System.Collections;

public class FirstPersonController : MonoBehaviour {

	public float movementSpeed = 5.0f;
	public float mouseSensitivity = 5.0f;
	public float jumpSpeed = 6.0f;
	public float sprintSpeed = 20.0f;

	float verticalRotation= 0;
	public float upDownRange = 60.0f;

	float verticalVelocity = 0;

	CharacterController characterController;

	// Use this for initialization
	void Start () {
	Screen.lockCursor = true;
	characterController = GetComponent<CharacterController> ();

	}
	
	// Update is called once per frame
	void Update () {


		//Rotation

		float rotLeftRight = Input.GetAxis ("Mouse X") * mouseSensitivity;
		transform.Rotate (0, rotLeftRight, 0);

		verticalRotation -= Input.GetAxis ("Mouse Y") * mouseSensitivity;
		verticalRotation = Mathf.Clamp(verticalRotation, -upDownRange, upDownRange);
		Camera.main.transform.localRotation = Quaternion.Euler (verticalRotation, 0, 0);



		//Movement

		float forwardSpeed = Input.GetAxis ("Vertical") * movementSpeed;
		float sideSpeed = Input.GetAxis ("Horizontal") * movementSpeed;

		verticalVelocity += Physics.gravity.y * Time.deltaTime;

		if (characterController.isGrounded && Input.GetButtonDown ("Jump")) {
			verticalVelocity = jumpSpeed;
		}
		if (characterController.isGrounded){ 
			if(Input.GetKey(KeyCode.LeftShift)) 
			{
				movementSpeed = sprintSpeed;
			}
			else if (Input.GetKeyUp(KeyCode.LeftShift)) 
			{
				movementSpeed = 5;
			}
		}

		Vector3 speed = new Vector3 (sideSpeed, verticalVelocity, forwardSpeed);

		speed = transform.rotation * speed;

		characterController.Move(speed * Time.deltaTime);
	}
}

Switch the GetKey(KeyCode.LeftShift) and isGrounded statements:

if (characterController.isGrounded  && Input.GetKey(KeyCode.LeftShift))
{
    movementSpeed = sprintSpeed;
}
else
{
	movementSpeed = 5;
}