diff --git a/bilby/core/sampler/dynesty.py b/bilby/core/sampler/dynesty.py
index 3bd8b55e48566383a90c6de21c2df76b7802bae2..64efb33dbf1efaae05fcdaf0b3f800f39919ff43 100644
--- a/bilby/core/sampler/dynesty.py
+++ b/bilby/core/sampler/dynesty.py
@@ -75,7 +75,7 @@ class Dynesty(NestedSampler):
         If true, resume run from checkpoint (if available)
     """
     default_kwargs = dict(bound='multi', sample='rwalk',
-                          verbose=True, periodic=None,
+                          verbose=True, periodic=None, reflective=None,
                           check_point_delta_t=600, nlive=1000,
                           first_update=None, walks=None,
                           npdim=None, rstate=None, queue_size=None, pool=None,
@@ -198,19 +198,21 @@ class Dynesty(NestedSampler):
         sys.stdout.flush()
 
     def _apply_dynesty_boundaries(self):
-        if self.kwargs['periodic'] is None:
-            logger.debug("Setting periodic boundaries for keys:")
-            self.kwargs['periodic'] = []
-            self._periodic = list()
-            self._reflective = list()
-            for ii, key in enumerate(self.search_parameter_keys):
-                if self.priors[key].boundary in ['periodic', 'reflective']:
-                    self.kwargs['periodic'].append(ii)
-                    logger.debug("  {}".format(key))
-                    if self.priors[key].boundary == 'periodic':
-                        self._periodic.append(ii)
-                    else:
-                        self._reflective.append(ii)
+        self._periodic = list()
+        self._reflective = list()
+        for ii, key in enumerate(self.search_parameter_keys):
+            if self.priors[key].boundary == 'periodic':
+                logger.debug("Setting periodic boundary for {}".format(key))
+                self._periodic.append(ii)
+            elif self.priors[key].boundary == 'reflective':
+                logger.debug("Setting reflective boundary for {}".format(key))
+                self._reflective.append(ii)
+
+        # The periodic kwargs passed into dynesty allows the parameters to
+        # wander out of the bounds, this includes both periodic and reflective.
+        # these are then handled in the prior_transform
+        self.kwargs["periodic"] = self._periodic
+        self.kwargs["reflective"] = self._reflective
 
     def run_sampler(self):
         import dynesty
@@ -505,8 +507,4 @@ class Dynesty(NestedSampler):
         |theta| - 1 (i.e. wrap around).
 
         """
-        theta[self._periodic] = np.mod(theta[self._periodic], 1)
-        theta_ref = theta[self._reflective]
-        theta[self._reflective] = np.minimum(
-            np.maximum(theta_ref, abs(theta_ref)), 2 - theta_ref)
         return self.priors.rescale(self._search_parameter_keys, theta)
diff --git a/setup.py b/setup.py
index 74f2372a2a225ef3173be49a65e0ed49c2234f0e..63ae9e7352b5c305cd4809c4305d94e7ef1390e6 100644
--- a/setup.py
+++ b/setup.py
@@ -78,7 +78,7 @@ setup(name='bilby',
                     'bilby': [version_file]},
       install_requires=[
           'future',
-          'dynesty>=0.9.7',
+          'dynesty>=1.0.0',
           'corner',
           'dill',
           'numpy>=1.9',
diff --git a/test/sampler_test.py b/test/sampler_test.py
index a7cfe5978be9ba9cb873ca202b6709016a4a33ed..88bfc4a04b15c77fb39b95fe8a45d2c0c6d922c2 100644
--- a/test/sampler_test.py
+++ b/test/sampler_test.py
@@ -134,8 +134,8 @@ class TestDynesty(unittest.TestCase):
     def setUp(self):
         self.likelihood = MagicMock()
         self.priors = bilby.core.prior.PriorDict()
-        self.priors['a'] = bilby.core.prior.Prior(boundary='periodic')
-        self.priors['b'] = bilby.core.prior.Prior(boundary='reflective')
+        self.priors['a'] = bilby.core.prior.Prior()
+        self.priors['b'] = bilby.core.prior.Prior()
         self.sampler = bilby.core.sampler.Dynesty(self.likelihood, self.priors,
                                                   outdir='outdir', label='label',
                                                   use_ratio=False, plot=False,
@@ -147,7 +147,7 @@ class TestDynesty(unittest.TestCase):
         del self.sampler
 
     def test_default_kwargs(self):
-        expected = dict(bound='multi', sample='rwalk', periodic=None, verbose=True,
+        expected = dict(bound='multi', sample='rwalk', periodic=None, reflective=None, verbose=True,
                         check_point_delta_t=600, nlive=1000, first_update=None,
                         npdim=None, rstate=None, queue_size=None, pool=None,
                         use_pool=None, live_points=None, logl_args=None, logl_kwargs=None,
@@ -157,15 +157,18 @@ class TestDynesty(unittest.TestCase):
                         logl_max=np.inf, add_live=True, print_progress=True, save_bounds=False,
                         walks=20, update_interval=600, print_func='func', n_effective=None)
         self.sampler.kwargs['print_func'] = 'func'  # set this manually as this is not testable otherwise
-        self.assertListEqual([0, 1], self.sampler.kwargs['periodic'])  # Check this separately
-        self.sampler.kwargs['periodic'] = None  # The dict comparison can't handle lists
+        # DictEqual can't handle lists so we check these separately
+        self.assertEqual([], self.sampler.kwargs['periodic'])
+        self.assertEqual([], self.sampler.kwargs['reflective'])
+        self.sampler.kwargs['periodic'] = expected['periodic']
+        self.sampler.kwargs['reflective'] = expected['reflective']
         for key in self.sampler.kwargs.keys():
             print("key={}, expected={}, actual={}"
                   .format(key, expected[key], self.sampler.kwargs[key]))
         self.assertDictEqual(expected, self.sampler.kwargs)
 
     def test_translate_kwargs(self):
-        expected = dict(bound='multi', sample='rwalk', periodic=[0, 1], verbose=True,
+        expected = dict(bound='multi', sample='rwalk', periodic=[], reflective=[], verbose=True,
                         check_point_delta_t=600, nlive=1000, first_update=None,
                         npdim=None, rstate=None, queue_size=None, pool=None,
                         use_pool=None, live_points=None, logl_args=None, logl_kwargs=None,
@@ -183,6 +186,21 @@ class TestDynesty(unittest.TestCase):
             self.sampler.kwargs['print_func'] = 'func'  # set this manually as this is not testable otherwise
             self.assertDictEqual(expected, self.sampler.kwargs)
 
+    def test_prior_boundary(self):
+        self.priors['a'] = bilby.core.prior.Prior(boundary='periodic')
+        self.priors['b'] = bilby.core.prior.Prior(boundary='reflective')
+        self.priors['c'] = bilby.core.prior.Prior(boundary=None)
+        self.priors['d'] = bilby.core.prior.Prior(boundary='reflective')
+        self.priors['e'] = bilby.core.prior.Prior(boundary='periodic')
+        self.sampler = bilby.core.sampler.Dynesty(self.likelihood, self.priors,
+                                                  outdir='outdir', label='label',
+                                                  use_ratio=False, plot=False,
+                                                  skip_import_verification=True)
+        self.assertEqual([0, 4], self.sampler.kwargs["periodic"])
+        self.assertEqual(self.sampler._periodic, self.sampler.kwargs["periodic"])
+        self.assertEqual([1, 3], self.sampler.kwargs["reflective"])
+        self.assertEqual(self.sampler._reflective, self.sampler.kwargs["reflective"])
+
 
 class TestEmcee(unittest.TestCase):