postgresql operator negator usage
Starting with PostgreSQL documentation about Negators:

36.13.2. NEGATOR
The NEGATOR clause, if provided, names an operator that is the negator of the operator being defined. We say that operator A is the negator of operator B if both return Boolean results and (x A y) equals NOT (x B y) for all possible inputs x, y. Notice that B is also the negator of A. For example, &lt; and &gt;= are a negator pair for most data types. An operator can never validly be its own negator.
[...]

The way the NEGATOR is supposed to behave does not match your intended usage. I guess this could result in some execution plans not giving the intended results.
Again, according to the docs:

Providing a negator is very helpful to the query optimizer since it allows expressions like NOT (x = y) to be simplified into x &lt;&gt; y. This comes up more often than you might think, because NOT operations can be inserted as a consequence of other rearrangements.

The way the text has been written, I understand that this implies that the planner might simpify a clause like NOT(a op b) into a negator_op b (or even the other way around, as commented out by @craig-ringer); but it also might not do it. The planner is allowed to make the simplification, but not coerced to or has an obligation to perform the conversion.
I suggest that, if you need different kind of comparisons, that you create other opeartors  (let's say &lt;% &gt;% &lt;=% &gt;=% or something like that), with corresponding negators if they make sense.