	function find_peaks,y,x,width=width,sigma=sigma,all=all

;+
;	Function FIND_PEAKS returns array of indices where
;	input argument has local maximumes. 
;
;-

y_save=y

if n_elements(width) gt 0 then y=y-median(y,width)

	if n_elements(sigma) gt 0 then begin
a=stdev(y)*sigma
index=where(abs(y) lt a)
if index(0) ne -1 then y(index)=0
	endif

	if not keyword_set(all) then begin
Yint=y
inter=1
	endif else begin
xx=findgen(n_elements(y)*2-1)/2
Yint=interpolate(y,xx)
inter=2
	endelse

z=deriv(sign(deriv(Yint))) lt (-0.5)
index=where(z)
in=index(0)

	for j=1,n_elements(index)-1 do $
if index(j)-index(j-1) gt 1 then in=[in,index(j)]

N=n_elements(Yint)
index=in

	for j=0,n_elements(in)-1 do begin
a=max(Yint((in(j)-2 > 0):(in(j)+2 < N-1)),imax)
index(j)=in(j)+imax-2 > 0
	endfor

if n_elements(index) eq 1 then begin
	if index(0) lt 0 then a=max(Yint,index)
endif else if index(0) eq 0 then index=index(1:*)

if n_params() eq 2 then x=Yint(index)

y=y_save

return,index/inter
	end


