	pro pic_dig,array,x_out,y_out,mode,ymin,ymax
;mode 0-low,1-mean,2- high
Sz=size(array)

if Sz(0) lt 2 or n_params() lt 3 then message,'Incorrect call.'

;if (!d.flags and 2L^16) ne 0 then widget_control,/hour

t=where(array eq 0)
N=n_elements(t)

a=subs1to2(t,dim=[Sz(2),Sz(1)])

ind=sort(a(0,*))

x=reform(a(0,ind),N)
y=reform(a(1,ind),N)

x0=x(uniq(x))
N0=n_elements(x0)

Ymean=fltarr(N0)

		if n_params() eq 5 then begin
Ymin=(Ymax=Ymean)
	for j=0,N0-1 do begin
index=where(x eq x0(j))
Ymin(j)=min(y(index),max=tmp)
Ymax(j)=tmp
Ymean(j)=mean(y(index))
	endfor
		endif else begin
Ymin=(Ymax=Ymean)

	for j=0,N0-1 do begin
index=where(x eq x0(j))
Ymean(j)=total(y(index))/n_elements((y(index)))
Ymin(j)=min(y(index),max=tmp)
Ymax(j)=tmp

	endfor
		endelse

xmin=min(x0,max=xmax)

x_out=xmin+findgen(xmax-xmin+1)

;stop

Case mode  of
0.0:   y_out=interpol(ymin, x0, x_out)
1.0:   y_out=interpol(ymean, x0, x_out)
2.0:   y_out=interpol(ymax, x0, x_out)
EndCase

	if n_params() eq 5 then begin
ymin=interpol(ymin, x0, x_out)
ymax=interpol(ymax, x0, x_out)
	endif

	end
