;Purpose: Wraps an integer around specified boundss.
;Example: intwrap(31,[0,31]) returns 31
; intwrap(32,[0,31]) returns 0
; intwrap(33,[0,31]) returns 1
; intwrap(34,[0,31]) returns 2
; Etc...
;Update History: Written by Dillon Wong.
; Last modified on June 9, 2010.
; Unnecessary error checking removed on June 9, 2010.
;Notes: Routine should work with nonintegers too, but don't count on it.
; Routine might be more efficient if redesigned to use MOD.
function intwrap,num,bounds
nvalue=num
ltarray=0
gtarray=0
while (ltarray[0] NE -1) OR (gtarray[0] NE -1) do begin
ltarray=where(nvalue LT bounds[0])
gtarray=where(nvalue GT bounds[1])
if ltarray[0] NE -1 then nvalue[ltarray]+=bounds[1]-bounds[0]+1
if gtarray[0] NE -1 then nvalue[gtarray]+=bounds[0]-bounds[1]-1
endwhile
return,nvalue
end