diff --git a/immutablecollections/immutableset.py b/immutablecollections/immutableset.py
index 1f1225e..f8bf3db 100644
--- a/immutablecollections/immutableset.py
+++ b/immutablecollections/immutableset.py
@@ -496,7 +496,7 @@ class _SingletonImmutableSet(ImmutableSet[T]):
         self, item: Union[int, slice]
     ) -> Union[T, Sequence[T]]:
         # this works because Tuple can handle either type of index
-        if item == 0:
+        if item == 0 or -1:
             return self._single_value
         elif isinstance(item, slice):
             raise NotImplementedError(

diff --git a/tests/test_immutableset.py b/tests/test_immutableset.py
index 607ad6f..225d1a3 100644
--- a/tests/test_immutableset.py
+++ b/tests/test_immutableset.py
@@ -195,6 +195,12 @@ class TestImmutableSet(TestCase):
         with self.assertRaises(ValueError):
             s.index("z")
 
+    def test_singleton_index(self):
+        s = ImmutableSet.of([1])
+
+        self.assertEqual(1, s[0])
+        self.assertEqual(1, s[-1])
+
     def test_slice(self):
         self.assertEqual(2, ImmutableSet.of([1, 2, 3])[1])
         self.assertEqual((2, 3), ImmutableSet.of([1, 2, 3])[1:])

_SingletonImmutableSet crashes on __getitem__ with an index of -1
This should be an easy fix; just behave the same for -1 as 0 in the conditional `if item == 0` in `__getitem__`.

Minimal example:
```
$ python -c 'from immutablecollections import ImmutableSet; x = ImmutableSet.of([1]); x[-1]'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/constantinelignos/repos/immutablecollections/immutablecollections/immutableset.py", line 507, in __getitem__
    raise IndexError(f"Index {item} out-of-bounds for size 1 ImmutableSet")
IndexError: Index -1 out-of-bounds for size 1 ImmutableSet
```
tests/test_immutableset.py::TestImmutableSet::test_singleton_index
tests/test_immutableset.py::TestImmutableSet::test_as_list tests/test_immutableset.py::TestImmutableSet::test_bad_args tests/test_immutableset.py::TestImmutableSet::test_basic tests/test_immutableset.py::TestImmutableSet::test_cannot_init tests/test_immutableset.py::TestImmutableSet::test_comparisons tests/test_immutableset.py::TestImmutableSet::test_count tests/test_immutableset.py::TestImmutableSet::test_difference tests/test_immutableset.py::TestImmutableSet::test_empty tests/test_immutableset.py::TestImmutableSet::test_empty_singleton tests/test_immutableset.py::TestImmutableSet::test_hash_eq tests/test_immutableset.py::TestImmutableSet::test_immutable tests/test_immutableset.py::TestImmutableSet::test_index tests/test_immutableset.py::TestImmutableSet::test_init tests/test_immutableset.py::TestImmutableSet::test_isinstance tests/test_immutableset.py::TestImmutableSet::test_order_irrelevant_for_equals_hash tests/test_immutableset.py::TestImmutableSet::test_ordering tests/test_immutableset.py::TestImmutableSet::test_repr tests/test_immutableset.py::TestImmutableSet::test_require_ordered_input tests/test_immutableset.py::TestImmutableSet::test_return_identical_immutable tests/test_immutableset.py::TestImmutableSet::test_reversed tests/test_immutableset.py::TestImmutableSet::test_singleton_empty tests/test_immutableset.py::TestImmutableSet::test_slice tests/test_immutableset.py::TestImmutableSet::test_slots tests/test_immutableset.py::TestImmutableSet::test_str tests/test_immutableset.py::TestImmutableSet::test_type_testing tests/test_immutableset.py::TestImmutableSet::test_unhashable tests/test_immutableset.py::TestImmutableSet::test_union