Decreasing speed of background (of spaceshooter tutorial)

Trying to make animation, at the beginning of the level, so that the background moves very quickly and then it’s speed drops to usual. But somwhere in the midlle of the process animation starts going in the other direction, thou speed is still dropping.
Here is the code example:

public class BG_Scrolling : MonoBehaviour {
    public float scrollspeed;
    public float tileSizedZ;
    private float newposition;
    private float refflt;
    private Vector3 startposition;
    private void Start()
    {
        startposition = transform.position;
        scrollspeed = -100;
    }
    private void Update()
    {
        if (scrollspeed < -1) scrollspeed=Mathf.SmoothDamp(scrollspeed, -1, ref refflt, 3);
        newposition =Mathf.Repeat(Time.time * scrollspeed, tileSizedZ);
        Debug.Log(newposition + "=f(" + Time.time+"*"+scrollspeed+","+tileSizedZ+")"+"    "+Time.time*scrollspeed);
        transform.position = startposition + Vector3.forward * newposition;
    }
}

And here, you can see that newposition value starts to grow, instead of falling.

Any ideas how to avoid this thing or what function should I use to make this animation?
Thanks in advance!

Ended up with something like this. Seems like it works pretty fine. Hope it helps someone.

public class BG_Scrolling : MonoBehaviour {
    public float scrollspeed;
    public float tileSizedZ;
    private float newposition;
    private float refflt;
    private float delT=0;
    private Vector3 startposition;
    private void Start()
    {
        startposition = transform.position;
        scrollspeed = -100;
    }
    private void Update()
    {
        if (scrollspeed<-5)
        {
            scrollspeed = Mathf.SmoothDamp(scrollspeed, -3, ref refflt, 3f);
            newposition = Mathf.Repeat(-scrollspeed, tileSizedZ);
        }
        else if (delT==0)
        {
            delT = Time.time;
        }
        if (delT!=0)
        {
            newposition = Mathf.Repeat((newposition-Time.time+delT)*1, tileSizedZ);
            delT = Time.time;
        }
        transform.position = startposition + Vector3.forward * newposition;
    }
}