It is a little bit difficult to know exactly where the problem is by looking only at the program. This is because setting length offsets is done outside of the program, in the course of setting up the job.
Where is machine home relative to the part home (zero)?
What do you actually have set for your length offsets? Is the sign of the values correct?
Softlimit warnings in general, occur before the next movement is made which will send the tool outside of the machine envelope set in the soft limit parameters.
If the machine is not homed properly after power up, then the softlimits can be way out of wack because the machine position was not properly verified. For example, in a machine that does not retain (store) its current position before the power is shut off, the power up position will most likely be zero in all axis and the softlimits will be determined relative to that position.
One way to cancel a tool length offset on many machines is to call H0 for a length offset. But, there is also a gcode available on some machines to perform this function.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)