There is not, however that would not reduce the amount of phrase variations in this case.
If you want to be able to speak "Heading 180" and "Heading 180 from 360", you still need both sets of phrases, just as you have them defined now.
You can, however, reduce the total amount of variations by only generating the ones you'll actually use.
E.G. I assume you're not going to say "0360", or "00"
A more efficient setup could look like this:
[Heading;Course]0;[Heading;Course]0[1..99];[Heading;Course][100..360];[Heading;Course]0[1..99][From;Current]0[1..99];[Heading;Course]0[1..99][From;Current][100..360];[Heading;Course][100..360][From;Current][100..360];[Heading;Course][100..360][From;Current]0[1..99];[Heading;Course]0[From;Current]0;[Heading;Course]0[From;Current]0[1..99];[Heading;Course]0[From;Current][100..360];[Heading;Course]0[1..99][From;Current]0;[Heading;Course][100..360][From;Current]0
That generates 522,006 variations, instead of the 2,080,804 variations you're generating now.