9 раз из десяти, лучше решить проблему с индексами, но, предполагая, что это в 10-й раз, встроенные функции min, max можно комбинировать, чтобы дать вам вид защиты, который вы ищете:
# legal value, no change required
I= 2
D=(min(max(I,0),4))
# D will equal 2
# large negative set to zero
I= -7
D=(min(max(I,0),4))
# D will zero 0
# large positive set to the value of the maximum of 4
I= 7
D=(min(max(I,0),4))
# D will equal 4