             files.splice sindex, 1 if !!~sindex
             findex = files.indexOf "#{opts.fileId}_#{num}#{extensionWithDot}"
             if !!~findex
-              files.splice(findex, 1)
+              files.splice findex, 1
+            else if files.length <= 0
+              return finish cb
             else
-              console.warn "[Meteor.Files] [Write Method] [concatChunks] finish as no more file's chunks", files, {sindex, findex}, "#{opts.fileId}_#{num}#{extensionWithDot}" if self.debug
-              return finish cb
+              return concatChunks ++num, files, cb
 
             _path   = "#{pathName}_#{num}#{extensionWithDot}"
             _source = pathName + '_1' + extensionWithDot

            config.onError and config.onError.call result, error, fileData
          else
            result.state.set 'completed'
          worker.terminate() if worker
          return

        if config.onBeforeUpload and _.isFunction config.onBeforeUpload

          result.estimateSpeed.set (config.chunkSize / (_t / 1000))
          progress = Math.round((sentChunks / fileLength) * 100)
          result.progress.set progress
          config.onProgress and config.onProgress.call result, progress, fileData
          return
        , 250

        sendViaDDP = (evt) -> Meteor.defer ->
          console.timeEnd('loadFile') if self.debug
          opts =
            file:       fileData
            fileId:     fileId
            binData:    evt.data.bin
