diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py
index 156a34b6802b04833e74b1c2c70d86ab83c44d3b..b06e5003bef5bc8e47e5ebd82ae0ad18dfa689d5 100755
--- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/t_radb.py
@@ -25,6 +25,7 @@ import os
 from datetime import datetime, timedelta
 from dateutil import parser
 import logging
+from pprint import pformat
 
 logger = logging.getLogger(__name__)
 
@@ -159,7 +160,7 @@ class ResourceAssignmentDatabaseTest(unittest.TestCase):
 
     # --- tests start here
 
-    #
+
     # integrity tests of postgres database itself
     #
     # Note: These are meant to make sure the setup generally works and all sql scripts were applied.
@@ -1290,6 +1291,73 @@ class ResourceAssignmentDatabaseTest(unittest.TestCase):
         self.assertEqual(40, self.radb.get_max_resource_usage_between(117, task1['starttime'], task1['starttime'], 'claimed')['usage'])
         self.assertEqual(0, self.radb.get_max_resource_usage_between(117, task1['starttime']-timedelta(hours=2), task1['starttime']-timedelta(hours=1), 'claimed')['usage'])
 
+    def test_overlapping_claims(self):
+        # this is a special testcase to prove a bug found at 2017-08-16
+        # the bug was that a claim that should fit, does not fit according to the radb claim-methods.
+        # first, we'll prove that the bug exists (and that this test fails),
+        # and then, we'll fix the code, (so this test succeeds)
+
+        # for testing purposous let's give CEP4 storage a total size of 100
+        self.assertTrue(self.radb.updateResourceAvailability(117, available_capacity=100, total_capacity=100))
+        self.assertEqual(100, self.radb.getResources(117, include_availability=True)[0]['total_capacity'])
+
+        now = datetime.utcnow()
+        now -= timedelta(minutes=now.minute, seconds=now.second, microseconds=now.microsecond) # round to full hour
+
+        #insert one task, and reuse that for multiple overlapping claims
+        result = self.radb.insertSpecificationAndTask(0, 0, 'approved', 'observation', now, now+timedelta(hours=1), 'foo', 'CEP4')
+        self.assertTrue(result['inserted'])
+        task_id = result['task_id']
+
+        task = self.radb.getTask(task_id)
+        self.assertTrue(task)
+        self.assertEqual(task_id, task['id'])
+
+        #create two overlapping claims
+        claims = [ { 'resource_id': 117,
+                      'starttime': now,
+                      'endtime': now+timedelta(hours=0.75),
+                      'status': 'tentative',
+                      'claim_size': 40 },
+                   {'resource_id': 117,
+                    'starttime': now+timedelta(hours=0.25),
+                    'endtime': now + timedelta(hours=1),
+                    'status': 'tentative',
+                    'claim_size': 40} ]
+
+        # insert the claims
+        claim_ids = self.radb.insertResourceClaims(task_id, claims, 'foo', 1, 1)
+        self.assertEqual(2, len(claim_ids))
+        claims_org = claims
+
+        #get claim using t1_claim_ids, and check if db version is equal to original
+        claims = self.radb.getResourceClaims(claim_ids=claim_ids)
+        self.assertEqual(2, len(claims))
+        for claim, claim_org in zip(claims, claims_org):
+            for key, value in claim_org.items():
+                if key != 'status':
+                    self.assertEqual(value, claim_org[key])
+
+        # try to update the claim status to claimed, should succeed.
+        self.assertTrue(self.radb.updateResourceClaims(claim_ids, status='claimed'))
+        for claim in self.radb.getResourceClaims(claim_ids=claim_ids):
+            self.assertEqual('claimed', claim['status'])
+
+        # check the resource usage trend
+        logger.info("resource usages:\n%s", pformat(self.radb.getResourceUsages(now-timedelta(hours=1.0), now+timedelta(hours=2.0), 117)))
+        self.assertEqual(0, self.radb.get_max_resource_usage_between(117, now-timedelta(hours=1.0), now-timedelta(hours=0.01), 'claimed')['usage'])
+        self.assertEqual(40, self.radb.get_max_resource_usage_between(117, now+timedelta(hours=0.0), now+timedelta(hours=0.2), 'claimed')['usage'])
+        self.assertEqual(80, self.radb.get_max_resource_usage_between(117, now+timedelta(hours=0.3), now+timedelta(hours=0.6), 'claimed')['usage']) # AT THIS MOMENT THIS ASSERTS FAILS! (and should be fixed)
+        self.assertEqual(40, self.radb.get_max_resource_usage_between(117, now+timedelta(hours=0.80), now+timedelta(hours=1.0), 'claimed')['usage'])
+        self.assertEqual(80, self.radb.get_max_resource_usage_between(117, now+timedelta(hours=-0.1), now+timedelta(hours=1.1), 'claimed')['usage'])
+        self.assertEqual(0, self.radb.get_max_resource_usage_between(117, now+timedelta(hours=1.1), now+timedelta(hours=2.0), 'claimed')['usage'])
+
+        # check that there are no overlapping conflicting claims/tasks
+        # AT THIS MOMENT THESE ASSERTS FAIL! (and should be fixed)
+        for claim in claims:
+            self.assertEqual(0, len(self.radb.get_conflicting_overlapping_claims(claim['id'])))
+            self.assertEqual(0, len(self.radb.get_conflicting_overlapping_tasks(claim['id'])))
+
 
 if __name__ == "__main__":
     os.environ['TZ'] = 'UTC'