Discrete DensityDist

DensityDist accepts a dtype argument which you can set to int64. Otherwise PyMC doesn’t usually use any information about the distribution support. It should be enough to provide an initval that has a finite logp (the default is zero + jitter) and make sure your logp evaluates to -inf when it’s given an invalid value.

Something like this (writing from memory, so may need to be tweaked):

counts = pymc.DensityDist("ab", mu, r, k, logp=gompertz, dtype="int64", initval=1)