pm.find_MAP won't follow the bounds of custom distribution

I am defining a custom distribution using the code below:

class Jeffreys(pm.Continuous):
    def __init__(self, lower, upper, **kwargs):
        self.lower = lower
        self.upper = upper
        self.mean = (upper + lower)/2
        self.median = self.mean
        kwargs["testval"] = kwargs.pop("testval", self.mean)
        super(Jeffreys, self).__init__(**kwargs)
    def logp(self, value):
        lower = self.lower
        upper = self.upper
        normalization = 1. / pm.math.log(upper / lower)
        el = tt.log(normalization) - tt.log(value)
        return tt.switch(tt.or_(tt.gt(lower, value), tt.gt(value, upper)), -np.inf, el/2)

When using pm.sample with this distribution in the model, the lower and upper bounds are followed at every point. However, pm.find_MAP consistently goes below the lower bound, returning a logp of -inf. I can solve this problem by using arbitrarily large numbers in place of -np.inf, but I’m curious if there is anything I am doing wrong.

If you have custom distribution that are bounded, you can put a transformation in the __init__ so the bound is taken into account, they best way you could do that is to inherent from BoundedContinuous