Move NavMeshAgent backwards

So im tyring to implement a “Click to Move” combined with a Key input control.
It works pretty well as long as i only move forward.

Here my Code
`using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class ClickToMove : MonoBehaviour

private NavMeshAgent mNavMeshAgent;
public Animator anim;

public CameraController cam;

Ray ray;
RaycastHit hit;

bool walkDescFwd;
bool walkDescBwd;
bool fwd;
bool bwd;
bool left;
bool right;

// Use this for initialization
void Start()
    mNavMeshAgent = GetComponent<NavMeshAgent>();
    mNavMeshAgent.speed = 5;

// Update is called once per frame
void Update()
    fwd = Input.GetKey(KeyCode.W);
    bwd = Input.GetKey(KeyCode.S);
    left = Input.GetKey(KeyCode.E);
    right = Input.GetKey(KeyCode.Q);

   // This is for the ClickToMove controll... in this controll only moving forward is available
    if (Input.GetButtonDown("Fire1")&&cam.thirdP)
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, 100))
            mNavMeshAgent.destination = hit.point;
            fwd = true;

   // Here is the moving forward by pressing 'W', works fine cuz of transform.forward
    else if (Input.GetKey(KeyCode.W) || walkDescFwd)
        mNavMeshAgent.destination = transform.position + transform.forward * mNavMeshAgent.speed;
        walkDescFwd = true;

        if (!Input.GetKey(KeyCode.W))
            mNavMeshAgent.destination = transform.position;
            walkDescFwd = false;

  // And here i try to move backwards, but all it does is spinning aroung weridly, i guss i cant just negativ the transform.forward vector
    else if (Input.GetKey(KeyCode.S) || walkDescBwd)

        //mNavMeshAgent.destination = transform.position + (transform.forward * mNavMeshAgent.speed *-1) ;
        walkDescBwd = true;

        if (!Input.GetKey(KeyCode.S))
            mNavMeshAgent.enabled = true;
            mNavMeshAgent.destination = transform.position;
            walkDescBwd = false;

   // Stopping Logic
  // when the Agent reach its destination, animations stop
    if (mNavMeshAgent.remainingDistance <= mNavMeshAgent.stoppingDistance)
        anim.SetBool("walkfwd", false);
        anim.SetBool("walkbwd", false);
        fwd = false;
   // and if not, its obviously moving so i ask if any "move Keys" are pressed
  // if not, it must be moving by the "ClickToMove" controll and as i said only forward is allowed
 // but if any key is pressed i ask witch and play the animation for the direction
        if (!fwd && !bwd && !left && !right)
            anim.SetBool("walkfwd", true);
            anim.SetBool("walkfwd", fwd);
            anim.SetBool("walkbwd", bwd);
            anim.SetBool("walkleft", left);
            anim.SetBool("walkright", right);




so i really have no clue how to fix that.
if any one could help me, would be awesome.
P.S: Same Problem with left and right moving.

Dont know whats wrong with the wrap o.O