I am making a variable height jump but my character can float up infinitely even though my code should be working.

The reason jumpTimeCounter is public is so I could see what is going on. The problem is that jumpTimeCounter never goes under 0.34 when I set jumpTime to 0.35. Even if i set the jumpTime float to a insanely small number so jumpTimeCounter goes into the negatives, my character can still fly up indefinitely. I have no idea what is going on.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{

 public float speed;
 private float moveInput;
 public float jumpForce;
 public float jumpTimeCounter;
 public float jumpTime;
 public float extraJumps;
 public Rigidbody2D rb;

 private bool isGrounded;
 public bool isJumping;
 public Transform feetPos;
 public float checkRadius;
 public LayerMask whatIsGround;

   void Start()
   {
     rb = GetComponent<Rigidbody2D>();
   } 
  
  
  
   
   void FixedUpdate()
   {
    moveInput = Input.GetAxisRaw("Horizontal");
    rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
   }
   void Update()
   {
    isGrounded = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);

    if (isGrounded == true && Input.GetKey(KeyCode.Space))
    {
        isJumping = true;
        jumpTimeCounter = jumpTime;
        rb.velocity = Vector2.up * jumpForce;
	}
    if (Input.GetKey(KeyCode.Space) && isJumping == true)
    {
        if (jumpTimeCounter > 0)
        {
          rb.velocity = Vector2.up * jumpForce;
          jumpTimeCounter -= Time.deltaTime;
        }
        else
        {
           isJumping = false;
	    }
    }
    if (Input.GetKeyUp(KeyCode.Space))
    {
        isJumping = false;
	}
   }
}

Why so complicated?
Why not just:

void Update()
    {
     isGrounded = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);
 
     if (isGrounded == true && Input.GetKeyDown(KeyCode.Space))
     {
         rb.velocity = Vector2.up * jumpForce;
     }
    }

this should basically result in almost the same if you take a slightly larger value for jumpforce, depending on how large your jumpTime was.