80c59
< 	    b = MAX_INT - 1
---
> 	    b = MAX_INT / 2
178c157
< 	    dx = abs (dx + j * RNG_DX(rg,i))
---
> 	    dx = abs (dx - j * RNG_DX(rg,i))
190c169
< # RNG_INRANGE -- Check if value is within a range
---
> # RNG_INRANGER -- Check if real value is within a range.
192c171
< bool procedure rng_inrange (rg, x)
---
> bool procedure rng_inranger (rg, x)
211c190
< # RNG_ADD -- Add a range
---
> # RNG_INRANGEI -- Check if integer value is within an integer range.
212a192,236
> bool procedure rng_inrangei (rg, x)
> 
> pointer	rg			#I Range descriptor
> int	x			#I Value to check
> 
> bool	rng_inranger()
> 
> begin
> 	return (rng_inranger (rg, real(x)))
> end
> 
> 
> # RNG_ELEMENTR -- Check if real value is an element.
> 
> bool procedure rng_elementr (rg, x, delta)
> 
> pointer	rg			#I Range descriptor
> real	x			#I Value to check
> real	delta			#I Maximum distance from element
> 
> int	ival
> real	rval, rng_nearest()
> 
> begin
> 	return (abs (rng_nearest (rg, x, ival, rval)) < delta)
> end
> 
> 
> # RNG_ELEMENTI -- Check if integer value is an element.
> 
> bool procedure rng_elementi (rg, x)
> 
> pointer	rg			#I Range descriptor
> int	x			#I Value to check
> 
> int	ival
> real	rval, rng_nearest()
> 
> begin
> 	return (abs (rng_nearest (rg, real(x), ival, rval)) < 0.49)
> end
> 
> 
> # RNG_ADD -- Add a range.
> 
219,220c243,244
< int	i, j, nrgs, strlen(), ctor()
< real	x1, x2, dx, nx
---
> int	i, j, nx, nrgs, strlen(), ctor()
> real	x1, x2, dx
264,266d287
< 		j = MAX_INT / 2
< 		if ((x2 - x1) / dx + 1 > j)
< 		    x2 = x1 + (j - 1) * dx
289,291d309
< 		    j = MAX_INT / 2
< 		    if ((x2 - x1) / dx + 1 > j)
< 			x2 = x1 + (j - 1) * dx
305a324,326
> 	    nx = (x2 - x1) / dx + 1
> 	    if (nx > MAX_INT)
> 		call rng_error (5, rstr, r1, r2, dr, rg)
310,313d330
< 	    j = MAX_INT / 2
< 	    nx = (x2 - x1) / dx + 1
< 	    if (nx > j)
< 		call rng_error (5, r1, r2, dr, rg)
316,317c333,334
< 	    if (nx > j)
< 		call rng_error (5, r1, r2, dr, rg)
---
> 	    if (nx > MAX_INT)
> 		call rng_error (5, rstr, r1, r2, dr, rg)
