There is a wrapper for creating censored distributions
https://www.pymc.io/projects/docs/en/stable/api/distributions/censored.html
Also for censoring what happens is that you have a bunch of data say [10, 10, 10 ,180, 180, 1240]
with an upper an lower boundary (say 10, 1240). You supply this data as the observed input to your censored distribution and 10 and 1240 as lower and upper boundaries so that censored distribution decides how to tackle each data point. Probability of 10 and 1240 is then automatically calculated with cdf where as 180’s are calculated with the pdf.
Since I cant see what lower and upper looks like in your case without the data, I am not sure what you are doing here but it does not seem like it. Can you post an example of what lower and upper looks like?