Sorry for the late reply.
It quite honestly has to do with how fast your picture is rotating and how often you check for its angle. If the picture rotates too fast, then Ace will not be able to "find" it in angle you want to.
1. A "patchwork" way to do it, is to give your conditional a
margin of error. Have this script call inside a conditional:
screen.pictures[1].angle >= 200 && screen.pictures[1].angle <= 210
If you put that little script in your conditional, then instead of checking for a single angle, Ace will be checking for an angle that's bigger than 200 but smaller than 210. That way, if you check every second frame, even if Ace misses you initial value (200) it will still stop somewhere relatively close, with the largest possible diversion being 10 degrees (210). The larger that gap is, the easiest it is to stop the picture for higher speeds.
I tested it for a -5 speed, I checked every 2 frames and it worked. (Test project, no scripts).
But if your picture rotates much faster than that (double digit fast), then that won't be enough.
2. A second way I came up with for stopping, is an easing. Have this inside a script call command:
screen.pictures[1].rotate((x - screen.pictures[1].angle)/180)
x is the angle you want your picture to stop at.
This script call will make your picture get progressively slower, the closer it gets to the angle you want it to stop at.
If you want it to slow down faster then do this:
screen.pictures[1].rotate(((x - screen.pictures[1].angle)/180)*y)
y is a constant value of your choice. The bigger it is, the faster the picture will be reaching 0 velocity. If y is high enough, you can make the stop seem instantaneous.
DISCLAIMER: I'm not well acquainted with scripting yet, so there might be some less convoluted / more sophisticated ways to help you out. This is what I could figure out within my current knowledge and strength. With a little imagination, it has worked well for me. If someone more experienced would like to add something more, please feel free to.