Cannot dash in left-down, left-up and right-down directions?

Alright, this is pretty much the first project I actually want to finish after a lot of my past attempts and I’ve been trying to fix this stupid bug.
So basically I have a dash function on my player that allows you to dash when pressing space/jump and the dash works by multiplying the movement factor by an amount for the player to move faster. After you activate the dash you can move in every direction with no problems, but if you try to activate the dash while moving in the down-left, up-left or the down-right directions it doesn’t work, but up-right does. I’m guessing it’s because of the player moving in a negative direction but if that were the case it wouldn’t work when moving straight left or down either. Any help would be appreciated as I do not understand why this won’t work as intended. Thanks!
This is the code for the movement:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    // Start is called before the first frame update
    public float speed = 4f;
    public float dashMult = 2f;
    private float initialDashMult;
    public float initialDashCooldown = 1f;
    private float dashCooldown;
    private float dashStopTime;

    Rigidbody2D body;

    float horizontal;
    float vertical;

    private void Start()
    {
        body = GetComponent<Rigidbody2D>();
        initialDashMult = dashMult;
        dashMult = 1f;
    }

    // Update is called once per frame

    void Update()
    {

        horizontal = Input.GetAxisRaw("Horizontal");
        vertical = Input.GetAxisRaw("Vertical");

        if (dashCooldown > 0)
        {
            dashCooldown -= Time.deltaTime;
            dashStopTime = initialDashCooldown - .2f;
            if(dashCooldown > dashStopTime)
            {
                dashMult = initialDashMult;
            }
            else
            {
                dashMult = 1f;
            }
        }
        //dash using space
        if (Input.GetButton("Jump") && dashCooldown < .00001)
        {
            //start dash
            dashCooldown = initialDashCooldown;
        }
    }
    void FixedUpdate()
    {
        //movement
        body.velocity = new Vector2(horizontal * speed * dashMult, vertical * speed * dashMult);
    }
}

So, I’ve gathered that initialDashCooldown is the “Cooldown” time for Dashing. But what is the difference between dashMult and initialDashMult? Does the dash decay over time? Perhaps more importantly, it seems you may have an issue with dashStopTime… it seems that it’s value is simply 1.8f, which you are reassigning every frame via Line 34. If it’s meant to have a constant value, I suppose that’s fine but currently you are performing arithmetic every frame to yield a constant value.

It might be worth taking a look at those variables to see if there’s something unintended occuring in your Update sequence that could be having the consequences you are seeing. If you can’t find anything, it might be worth explaining what these variables are supposed to do and/or give more detail on how dash should function (for instance, does it decay or not). What is ‘dashMult’, etc.

Alright I figured it out; it turns out my keyboard is kinda broken, I have a 2-key ghosting if I try to use the arrow keys. Welp that’s that. Anyone encountering this problem make sure you don’t have ghosting on your keyboard; you can try every key for free here on this site:
https://drakeirving.github.io/MultiKeyDisplay/
Have a good day to anyone finding this!