How do I allow my player object to continue rotating once it's met a clamped boundary?

I have a spaceship I’m moving around on the screen, when the player moves the ship, it rotates on its axis. However, when the ship meets a clamped boundary(on the x-axis) it abruptly stops. How do I make it so that the ship will still rotate when meeting the clamped boundary?

void Controls(){
    Rotate();
    MoveShip();
}
void Rotate(){
    player.rotation = Quaternion.Euler((player.velocity.y * -pitchAngle), 0f, (player.velocity.x * -bankRotation));
}
void MoveShip(){
    float moveVertical = Input.GetAxis("Vertical");
    float moveHorizontal = Input.GetAxis("Horizontal");
    Vector3 bank = new Vector3(moveHorizontal, 0f, 0f);
    Vector3 pitch = new Vector3(0f, moveVertical, 0f);
	player.AddForce(bank * bankSpeed);
    player.AddForce(pitch * pitchSpeed);
    player.position = new Vector3(Mathf.Clamp(player.position.x, xMin, xMax), Mathf.Clamp(player.position.y, yMin, yMax), 0f);
    if((player.position.x == xMin) || (player.position.x == xMax) || (player.position.y == yMin) || (player.position.y == yMax)){
        player.velocity = new Vector3(0f, 0f, 0f);
        player.angularVelocity = new Vector3(0f, 0f, 0f);
    }
}

First, there’s your Rotate() function:

void Rotate(){
    player.rotation = Quaternion.Euler((player.velocity.y * -pitchAngle), 0f, (player.velocity.x * -bankRotation));
}

Your rotational control is tied to your current velocity. You could apply a minimum potential multiplier to it in order to prevent complete immobility if desired:

public float minMult; // minimum velocity multiplier

// ...

player.rotation = Quaternion.Euler((Mathf.Max(player.velocity.y, minMult) * -pitchAngle), 0f, (Mathf.Max(player.velocity.x, minMult) * -bankRotation));

Next, there’s the physics-based aspect.

When you reach any boundary, all motion is immediately and entirely halted for both player.velocity and player.angularVelocity. First, you clamp the position. Then, if the position is at a boundary edge, you stop every frame.

Because all motion is stopped every frame upon reaching a boundary edge, no new motion can be applied. Depending on the intended behavior, the solution may be as simple as clamping position without stopping motion, or it may be more complicated, such as determining whether the player is moving towards or away from each boundary.