By having overlapping ranges it kind of makes sense. But maybe overlapping isn't what you want to do. What about:
(deftemplate fz-knowledge
0 100
( (low (20 1) (40 0))
(high (60 0) (80 1))
(med NOT [ low OR high ] )
))
That way, you can clearly tell when a score is low, or high, and the loosy-goosy med
just fills in the cracks.