Sprite rotation (z-axis) and translation (y) is not working

Hello everyone,

I have this game with asteroids, and
I want my asteroids to rotate on the z-axis while going down with a y translation. Instead, the asteroids rotate slowly as they move in a circle towards the right.

Here is what’s happening in an image:110735-situation.png

Here is the code that gives me this result:

    public GameObject asteroid;

    public float speedZ;
    public float speedDown;

    void Update()

        transform.Rotate(Vector3.forward * Time.deltaTime * speedZ);

        transform.Translate(Vector3.down * Time.deltaTime * speedDown);

        if (asteroid.transform.position.y < -5.5f)

The value I am using at the moment for speedZ is 20, and for speedDown, 1,5.

The more the value of speedZ goes up, the more the circle in which the asteroid moves gets smaller.
This can be seen in the following image where the asteroids have bunched up in a tight circle at a speedZ of 90:

Any help to solve this problem is greatly appreciated,
Thank you in advance.

Use Space.World in the translation as second parameter:

transform.Translate(Vector3.down * Time.deltaTime * speedDown, Space.World);