In your code you have
if x > 0
x_new = x - dx
if x_new < x
x = x_new
else x = x
end
if x < 0
The "end" you see there is for the "if x_new < x", so structurally this is like
if x > 0
x_new = x - dx
... assign something to x ...
if x < 0
Notice that you have not ended the "if x > 0" at the time you check "if x < 0". That might be deliberate, but it also means that if the value was initially negative then the "if x > 0" would not have succeeded and so you would not have reached the "if x < 0" line.
Your code is not commented so we cannot determine what you are intending to do.