The way the logic seems to work now is:
If Train T is approaching Block B and Block B is closed, then Train T stops at rail signal at beginning of Block B;
Else continue.
What I'm hoping to be added is an extra set of steps that happens when the signal has the No Stop option enabled.
The logic would something close to this:
If Train T is approaching Block B, and Block B is closed, and Signal S is normal, then stop at Signal S;
If Train T is approaching Block B, and Block B is closed, and Signal S is no-stop, then search for first signal between Signal S and Train T and stop at it;
If Train T is approaching Block B, and Block B is closed, and Signal S is no-stop, and no normal signal can be found between Signal S and Train T, then stop at Signal S;
Else continue.
The big thing is that it's not a thing of, never stop at the signal, it's a thing of stop at a signal prior to it if able. While it has other uses, the main reason for this is to prevent switches and intersections from becoming clogged by stopped trains.
Example A
Example B