Macro timeout questions

When my macro times out it simply stops running, regardless of what step the macro is on.
Is there a graceful way to timeout? I’d like to run a clean up macro if possible. Can I access the remaining run time to know when to stop the macro myself before it times out?

Yes, good idea! Use ${!runtime} for this. It contains the current run time.