diff --git a/pyfstat/core.py b/pyfstat/core.py
index b19f3693313d4f118397b33ac915d3bef1b09db1..1ffda24527c33fad3e81e463993e0f90103557ff 100755
--- a/pyfstat/core.py
+++ b/pyfstat/core.py
@@ -332,6 +332,7 @@ class ComputeFstat(BaseSearchClass):
     def __init__(self, tref, sftfilepattern=None, minStartTime=None,
                  maxStartTime=None, binary=False, BSGL=False,
                  transientWindowType=None, t0Band=None, tauBand=None,
+                 dt0=None, dtau=None,
                  detectors=None, minCoverFreq=None, maxCoverFreq=None,
                  injectSources=None, injectSqrtSX=None, assumeSqrtSX=None,
                  SSBprec=None):
@@ -360,6 +361,9 @@ class ComputeFstat(BaseSearchClass):
                    and tau in (2*Tsft,2*Tsft+tauBand).
             if =0, only compute CW Fstat with t0=minStartTime,
                    tau=maxStartTime-minStartTime.
+        dt0, dtau: int
+            grid resolutions in transient start-time and duration,
+            both default to Tsft
         detectors : str
             Two character reference to the data to use, specify None for no
             contraint. If multiple-separate by comma.
@@ -616,27 +620,38 @@ class ComputeFstat(BaseSearchClass):
                     .format(self.transientWindowType,
                             ', '.join(transientWindowTypes)))
 
+            # default spacing
             self.Tsft = int(1.0/SFTCatalog.data[0].header.deltaF)
-            if self.t0Band is None:
+            self.windowRange.dt0 = self.Tsft
+            self.windowRange.dtau = self.Tsft
+
+            # special treatment of window_type = none ==> replace by rectangular window spanning all the data
+            if self.windowRange.type == lalpulsar.TRANSIENT_NONE:
+                self.windowRange.t0 = int(self.minStartTime)
                 self.windowRange.t0Band = 0
-                self.windowRange.dt0 = 1
-            else:
-                if not isinstance(self.t0Band, int):
-                    logging.warn('Casting non-integer t0Band={} to int...'
-                                 .format(self.t0Band))
-                    self.t0Band = int(self.t0Band)
-                self.windowRange.t0Band = self.t0Band
-                self.windowRange.dt0 = self.Tsft
-            if self.tauBand is None:
+                self.windowRange.tau = int(self.maxStartTime-self.minStartTime)
                 self.windowRange.tauBand = 0
-                self.windowRange.dtau = 1
-            else:
-                if not isinstance(self.tauBand, int):
-                    logging.warn('Casting non-integer tauBand={} to int...'
-                                 .format(self.tauBand))
-                    self.tauBand = int(self.tauBand)
-                self.windowRange.tauBand = self.tauBand
-                self.windowRange.dtau = self.Tsft
+            else: # user-set bands and spacings
+                if self.t0Band is None:
+                    self.windowRange.t0Band = 0
+                else:
+                    if not isinstance(self.t0Band, int):
+                        logging.warn('Casting non-integer t0Band={} to int...'
+                                     .format(self.t0Band))
+                        self.t0Band = int(self.t0Band)
+                    self.windowRange.t0Band = self.t0Band
+                    if self.dt0:
+                        self.windowRange.dt0 = self.dt0
+                if self.tauBand is None:
+                    self.windowRange.tauBand = 0
+                else:
+                    if not isinstance(self.tauBand, int):
+                        logging.warn('Casting non-integer tauBand={} to int...'
+                                     .format(self.tauBand))
+                        self.tauBand = int(self.tauBand)
+                    self.windowRange.tauBand = self.tauBand
+                    if self.dtau:
+                        self.windowRange.dtau = self.dtau
 
     def get_fullycoherent_twoF(self, tstart, tend, F0, F1, F2, Alpha, Delta,
                                asini=None, period=None, ecc=None, tp=None,
diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py
index 428ea2347a1b35b7114a538c4714602d893037da..20ddd0f18eaf0369f2410c37a5f05b0aa6d3649b 100644
--- a/pyfstat/grid_based_searches.py
+++ b/pyfstat/grid_based_searches.py
@@ -353,6 +353,7 @@ class TransientGridSearch(GridSearch):
                  detectors=None, SSBprec=None, injectSources=None,
                  input_arrays=False, assumeSqrtSX=None,
                  transientWindowType=None, t0Band=None, tauBand=None,
+                 dt0=None, dtau=None,
                  outputTransientFstatMap=False):
         """
         Parameters
@@ -380,6 +381,9 @@ class TransientGridSearch(GridSearch):
                    and tau in (2*Tsft,2*Tsft+tauBand).
             if =0, only compute CW Fstat with t0=minStartTime,
                    tau=maxStartTime-minStartTime.
+        dt0, dtau: int
+            grid resolutions in transient start-time and duration,
+            both default to Tsft
         outputTransientFstatMap: bool
             if true, write output files for (t0,tau) Fstat maps
             (one file for each doppler grid point!)
@@ -404,6 +408,7 @@ class TransientGridSearch(GridSearch):
             detectors=self.detectors,
             transientWindowType=self.transientWindowType,
             t0Band=self.t0Band, tauBand=self.tauBand,
+            dt0=self.dt0, dtau=self.dtau,
             minStartTime=self.minStartTime, maxStartTime=self.maxStartTime,
             BSGL=self.BSGL, SSBprec=self.SSBprec,
             injectSources=self.injectSources,