pro bias_sub, date=date,skipsky=skipsky,skipflat=skipflat

        if not(keyword_set(date)) then date='07Apr29'
        rootdir='/Volumes/SEA_DISC/'
 	reduceddir = '~/Desktop/LSST/KPNO/Images/Reduced/'
        cd,rootdir+date

	;Block Length for Offset
	BlockLength = 1440

        if not(keyword_set(skipsky)) then skipsky=0
        if not(keyword_set(skipflat)) then skipflat=0
	skipflat = 1
	If skipflat eq 1 then begin
  	  M16_I_Files = file_search('M16*15*.fits')
  	  M16_G_Files = file_search('M16*20*.fits')

	  Dark_I_Files = file_search('Dark*15*.fits')
	  Dark_G_Files = file_search('Dark*20*.fits')

	  ;Get a few kewyords
	  Fits_Read,  M16_I_Files(0), NoData, FitsHeader_I, /header_only       
	  Fits_Read,  M16_G_Files(1), NoData, FitsHeader_G, /header_only
	  Naxis1     = long(sxpar(FitsHeader_I, 'NAXIS1'))          
	  Naxis2     = long(sxpar(FitsHeader_G, 'NAXIS2'))         
	  TotalReads_I = sxpar(FitsHeader_I ,'NAXIS3')       
	  TotalReads_G = sxpar(FitsHeader_G ,'NAXIS3')
      
  	  ArrSize = long(Naxis1*Naxis2)

	  ;I Filter For M16
	  Fits_Read, M16_I_Files(0), Frame_First_I, First = BlockLength, Last = long(ArrSize) + BlockLength - 1
	  Frame_First_I = reform(temporary(Frame_First_I + 32768.), Naxis1, Naxis2)
	  Fits_Read, M16_I_Files(0), Frame_Last_I, First = (TotalReads_I - 2) * ArrSize + BlockLength, $
				       Last = (TotalReads_I-1)*ArrSize +BlockLength - 1
	  Frame_Last_I = reform(temporary(Frame_Last_I + 32768.), Naxis1, Naxis2)
	  ;Dark For M16 in I
          Fits_Read, Dark_I_Files(0), Frame_First_Dark_I, First = 0, Last = long(ArrSize) - 1
          Frame_First_Dark_I = reform(temporary(Frame_First_Dark_I), Naxis1, Naxis2)

          Fits_Read, Dark_I_Files(0), Frame_Last_Dark_I, First = (TotalReads_I - 2) * ArrSize, $
                                       Last = (TotalReads_I-1)*ArrSize - 1
          Frame_Last_Dark_I = reform(temporary(Frame_Last_Dark_I), Naxis1, Naxis2)

	  Real_Frame = (long(Frame_Last_I) - long(Frame_First_I)) - (long(Frame_Last_Dark_I) - long(Frame_First_Dark_I))
	  tv, bytscl(congrid(Real_Frame , 512, 512), min = min(Real_Frame), max = max(Real_Frame))

	EndIf
	skipsky = 0
        if skipsky eq 0 then begin
                files=file_search('Cuyo*Dither*20_Reads*.fits')
                dummy=0
		valid_indices = 0
		
		;Find I filter images
		for i = 0, n_elements(files) - 1 do begin
		   print, i
                   Fits_Read,  Files(i), NoData, FitsHeader, /header_only
                   Filter = sxpar(FitsHeader ,'FILTER')
 		   If stregex(Filter, 'I', /boolean) then $
		   valid_indices = [valid_indices, i]
		endfor
	
		im=intarr(Naxis1,Naxis2,n_elements(valid_indices-1))
                for i=1, n_elements(valid_indices)-1 do begin
		   print, i
		   index=valid_indices(i)
		   Fits_Read, Files(index), Dummy_Last, First = (TotalReads_I - 2) * ArrSize, $
                                       Last = (TotalReads_I-1)*ArrSize - 1
                   Dummy_Last = reform(temporary(Dummy_Last), Naxis1, Naxis2)

       		   Fits_Read, Files(index), Dummy_First, First = 0, $
					Last = long(ArrSize) - 1
		   Dummy_First = reform(temporary(Dummy_First), Naxis1, Naxis2)
 
                   im(*,*,i)= temporary(Dummy_Last - Dummy_First)

                   dummy=0

                endfor

                medim=median(im,dimension=3)
                writefits,Reduceddir+'medsky'+date+'.fits',medim,h

        endif else begin

                medim=readfits('medsky'+date+'.fits',hsky)

        endelse
 
	sxaddpar,h,'BITPIX','32'
        sxaddpar,h,'BZERO', 32768
        sxaddpar,h,'BSCALE', 1
        sxaddpar,h,'TEST','TIME'	
	fits_write, '~/Desktop/Test1.fits', Real_Frame, h
stop

end
