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;
            Debug.Log("drin");
            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
    else
    {
        if (!fwd && !bwd && !left && !right)
        {
            anim.SetBool("walkfwd", true);
        }
        else
        {
            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