pro norp_alpha,freq,fi0,mvd0,mvdfit,alpha_tk0,alpha_tn0,freqpk0,fluxpk0 $
    ,galpha_tk=galpha_tk,galpha_tn=galpha_tn,gfreqpk=gfreqpk,gfluxpk=gfluxpk $
    ,status=status0

;+
;
;-

sz=size(fi0)
if (sz(0) eq 1) then nx=1 else nx=sz(2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Initial Guess

if not keyword_set(galpha_tk) then galpha_tk=fltarr(nx)+2.9
if not keyword_set(galpha_tn) then galpha_tn=fltarr(nx)-2.0
if not keyword_set(gfluxpk) then begin
  gfluxpk=fltarr(nx)
  mpk=intarr(nx)
  for n=0,nx-1 do begin
    gfluxpk(n)=max(fi0(*,n),mpk0)
    mpk(n)=mpk0
  endfor
endif
if not keyword_set(mpk) then mpk=intarr(nx)+3
if not keyword_set(gfreqpk) then gfreqpk=freq((mpk-1)>0)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

if not keyword_set(mvd0) then begin
  mvd0=byte(fi0) & mvd0(*)=1b
endif

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Fitting Fi

alpha_tn0=galpha_tn
alpha_tk0=galpha_tk
fluxpk0=gfluxpk
freqpk0=gfreqpk
status0=intarr(nx)+1
mvdfit=bytarr(nx)+1b

for n=0,nx-1 do begin

status=0
fi=fi0(*,n)
mvd=mvd0(*,n)
whr=where(fi le 0,count)
if (count ne 0) then goto,L100
whr=where(mvd eq 0,count)
if (count ne 0) then goto,L100

a1= galpha_tk(n) & a3=a1-galpha_tn(n)
a0= gfluxpk(n)/gfreqpk(n)^a1
a2= gfreqpk(n)^a3
a=[a0,a1,a2,a3]
w=fltarr(n_elements(fi))+1.
yfit=norp_curvefit(alog(freq),alog(fi),w,a,sigma $
    ,function_name='norp_funct',itmax=200,iter=iter,status=status)

alpha_tk=a(1) & alpha_tn=a(1)-a(3)
freqpk=a(2)^(1./a(3))
fluxpk=a(0)*freqpk^a(1)

alpha_tk0(n)=alpha_tk
alpha_tn0(n)=alpha_tn
fluxpk0(n)=fluxpk
freqpk0(n)=freqpk
status0(n)=status

L100:

endfor

whr=where(status0 ne 0,cnt)
if (cnt ge 1) then mvdfit(whr)=0b

if (nx eq 1) then begin
alpha_tk0=alpha_tn0(0)
alpha_tn0=alpha_tn0(0)
fluxpk0=fluxpk0(0)
freqpk0=freqpk0(0)
status0=status0(0)
mvdfit=mvdfit(0)
endif

return
end
