The condition for using a variate directly instead of interpolating was
just wrong. It would interpolate in cases where it clearly should not,
which produced incorrect results in many cases.
Thanks to Fabio Bordignon <bordignon@demos.it> for reporting the problem
and supplying a simple test case.