         return [ticks, resolution];
 
     isSyncing: () ->
-        return !(@lastSyncState is @currentSyncState) || !(@currentBucketSyncState is @lastBucketSyncState)
+        return @toFetch > 0
 
     doFetch: (start, end, params) ->
-        # TODO: if below threshold -> do the usual fetching
         { scales } = params
         [ ticks, resolution ] = @makeTicks(scales.x)
 

                b = new Date(bucket.getTime() + (dt or resolution))
                source(a, b, params, (count) =>
                    @bucketCache.setBucket(resolution, a, dt, count)
                    fetched += 1
                    # if bucketsToFetch.length == fetched and @currentBucketSyncState is @lastBucketSyncState
                    # if bucketsToFetch.length == fetched and @currentBucketSyncState is @lastBucketSyncState
                    @listeners.synced()
                    summaryCallback()
                )

        { @bucketSource } = options
        currentBucketSyncState = 0
        lastBucketSyncState = 0
        @toFetch = 0

    useBuckets: (start, end) ->
        [ isLower, definite ] = @bucketCache.isCountLower(start, end, @histogramThreshold)
