Try the attached NotQuiteOrthoLines.lsp and its NQOL command. [I used the wording "Not Quite" rather than simply "NOT," because a Line at (for example) 45° is clearly NOT Orthogonal, but the whole point of the Topic seems to be that you don't want a Line like that flagged.] You can change the tolerance for how far off of orthogonal to test for, and for how precisely orthogonal a Line needs to be to leave it alone, at the <-- EDIT lines.
It assigns to all such Lines, whether not quite horizontal or not quite vertical, on the same Layer/color, because your original did, but it could be made to differentiate.
It doesn't check the angle of a Line against all four directional possibilities, but rather looks at the (rem)ainder of the angle when divided by 90°, resulting in a single how-far-off-orthogonal-is-it value. It checks against two values rather than four, i.e. whether that is within 2° of either 0° or 90°, because for a Line that's 1° off, that remainder could be either 1° or 89°.
As in your original, it puts things on the Layer and assigns the red color as a property override. Consider assigning that color to the Layer, and making the Lines put on it BYLAYER in color. That way, when you've fixed something that's a little off, you can just change it to its intended Layer, and won't also need to strip the color override from it.
And other questions arise.... The same kind of check for Polyline line segments or Mline segments? [It couldn't change the Layer/color of an individual segment, so some other flagging method would be needed.] The same kind of check for rotation angles of Blocks and/or Text and/or Mtext?
Kent Cooper, AIA