Thank you Naith!
I understood what mistake I made while reading the code:
If hopefully I'm not wrong that's what it is:
Camera.XPosition += ((ScrollingLeft ? -Camera.Velocity : Camera.Velocity) * (float)DeltaTime);
I did not realise that ( being into an if statement that is always true when !Camera_STILL)
by using the code above the value in Camera.XPosition keeps increasing/decreasing automatically in every iteration, also Camera.XPosition was declared outside the if condition loop so it will not lose its current value.
and then when after various iterations that value reaches 800 or a bigger value (if bigger I guess is slightly bigger and not noticeable during rendering) immediately(that's why I said not noticeable) the code set the Camera.XPosition, Camera.PrevXPosition to their final position that are fixed values 800,1600,2400,3200.... and set Camera_Still and therefore ends the scrolling.
Please let me know and many thanks again!