Is there bias when you estimate a truncated distribution in this way? Let's say I have a process which generates non-negative integers based on some unknown probability distribution, however those numbers can not be more than some threshold $N$ (by the design of the system).  For example, let's say the threshold is $N=1000$. This system can generated a number from set $\{0,1,2,4,5,6,7,8,9,10,...,1000\}$ with unknown probability distribution.
Now, suppose I assume a statistical distribution to model the probability of above result which can take any value in positive domain --- e.g. the Poisson distribution, which theoretically can assume any non-negative integer.
Suppose I sample numbers from this process and get $ X_1, X_2,..., X_{50}$.
Now to calculate the expectation, say I use these values and corresponding probabilities from the Poisson distribution.  In this case, would I under-estimate or over-estimate the true mean of the process?
I guess I will be under-estimating the true mean because given that to represent probability I am assuming all positive values can occur with certain non zero probabilities, which is not the case for this system. Therefore I am assigning lesser probability to the corresponding number to estimate the expectation.
Is above thought process right? Will it be the case for any value of the threshold?

If the threshold value is $1000,$ then it seems safe to use a Poisson distribution
with mean $\lambda = 20,$ because $P(X > 1000) \approx 0,$ for $X\sim\mathsf{Pois}(\lambda = 20).$ [Computation in R.]
1 - ppois(1000, 20)
[1] 0

A simulation of a million samples of size $n=200$ from $\mathsf{Pois}(20),$
with truncation of any observations above $1000.$.
set.seed(1128)
m = 10^6;  lam = 20;  mx = 1000;  n= 200;  a = numeric(m)
for(i in 1:m) {
 x = rpois(n,lam)
 x[x > mx] = mx    $ truncation to 1000
 a[i] = mean(x)    # sample mean
 }
mean(a);  var(a)
[1] 20.00028
[1] 0.1000547

The distribution of sample means $\bar X_{200}$ [as in code] is
approximately normal and a 95% CI for $\lambda$
is $(19.38, 20.62).$ Truncation, if any, has had no noticeable effect.
mean(a) + qnorm(c(.025,.975))*sd(a)
[1] 19.38031 20.62024

hist(a, prob=T, col="skyblue2", main="Simulated Poisson Means")
 curve(dnorm(x, mean(a), sd(a)), add=T, lwd=2, col="brown")


