Fix retry.with_delay multiplier parameter handling (#164)

Issue: https://github.com/googleapis/python-api-core/issues/163
diff --git a/google/api_core/retry.py b/google/api_core/retry.py
index 592d34f..43e4f07 100644
--- a/google/api_core/retry.py
+++ b/google/api_core/retry.py
@@ -345,7 +345,7 @@
             predicate=self._predicate,
             initial=initial if initial is not None else self._initial,
             maximum=maximum if maximum is not None else self._maximum,
-            multiplier=multiplier if maximum is not None else self._multiplier,
+            multiplier=multiplier if multiplier is not None else self._multiplier,
             deadline=self._deadline,
             on_error=self._on_error,
         )
diff --git a/tests/unit/test_retry.py b/tests/unit/test_retry.py
index a0160e9..4c2e457 100644
--- a/tests/unit/test_retry.py
+++ b/tests/unit/test_retry.py
@@ -246,11 +246,43 @@
             deadline=4,
             on_error=mock.sentinel.on_error,
         )
-        new_retry = retry_.with_delay(initial=1, maximum=2, multiplier=3)
+        new_retry = retry_.with_delay(initial=5, maximum=6, multiplier=7)
+        assert retry_ is not new_retry
+        assert new_retry._initial == 5
+        assert new_retry._maximum == 6
+        assert new_retry._multiplier == 7
+
+        # the rest of the attributes should remain the same
+        assert new_retry._deadline == retry_._deadline
+        assert new_retry._predicate is retry_._predicate
+        assert new_retry._on_error is retry_._on_error
+
+    def test_with_delay_partial_options(self):
+        retry_ = retry.Retry(
+            predicate=mock.sentinel.predicate,
+            initial=1,
+            maximum=2,
+            multiplier=3,
+            deadline=4,
+            on_error=mock.sentinel.on_error,
+        )
+        new_retry = retry_.with_delay(initial=4)
+        assert retry_ is not new_retry
+        assert new_retry._initial == 4
+        assert new_retry._maximum == 2
+        assert new_retry._multiplier == 3
+
+        new_retry = retry_.with_delay(maximum=4)
+        assert retry_ is not new_retry
+        assert new_retry._initial == 1
+        assert new_retry._maximum == 4
+        assert new_retry._multiplier == 3
+
+        new_retry = retry_.with_delay(multiplier=4)
         assert retry_ is not new_retry
         assert new_retry._initial == 1
         assert new_retry._maximum == 2
-        assert new_retry._multiplier == 3
+        assert new_retry._multiplier == 4
 
         # the rest of the attributes should remain the same
         assert new_retry._deadline == retry_._deadline