Your range starts at 107, so the second iteration y is 108 and the conditional for breaking the loop is met.
Seems like you’d be able to simplify that a bit too…
import time
y = 297 # why is this declared up here? is this used elsewhere?
x = 196
# get your range and reverse it
range_of_movement = range(107,197)
range_of_movement.reverse()
# move through each value in the range
for y in range_of_movement:
system.gui.moveComponent(event.source, x, y)
time.sleep(1)