diff --git a/theodolite/src/main/kotlin/theodolite/util/Results.kt b/theodolite/src/main/kotlin/theodolite/util/Results.kt
index b255ec73c9c13dfb2d18c781c9d60b3ec33c99db..418ac50f285996affd7db1c15fc44a22f1677d29 100644
--- a/theodolite/src/main/kotlin/theodolite/util/Results.kt
+++ b/theodolite/src/main/kotlin/theodolite/util/Results.kt
@@ -29,28 +29,28 @@ class Results (val metric: Metric) {
 
         when (metric) {
             Metric.DEMAND ->
-                if (optInstances.containsKey(experiment.first)) {
-                    if(optInstances[experiment.first]!! > experiment.second) {
-                        optInstances[experiment.first] = experiment.second
-                    }
-                } else {
-                    if(!successful){
-                        optInstances[experiment.first] = Int.MAX_VALUE
-                    }else {
+                if (successful) {
+                    if (optInstances.containsKey(experiment.first)) {
+                        if (optInstances[experiment.first]!! > experiment.second) {
+                            optInstances[experiment.first] = experiment.second
+                        }
+                    } else {
                         optInstances[experiment.first] = experiment.second
                     }
+                } else if (!optInstances.containsKey(experiment.first)) {
+                    optInstances[experiment.first] = Int.MAX_VALUE
                 }
             Metric.CAPACITY ->
-                if (optInstances.containsKey(experiment.second)) {
-                    if (optInstances[experiment.second]!! < experiment.first){
-                        optInstances[experiment.second] = experiment.first
-                    }
-                } else {
-                    if(!successful){
-                        optInstances[experiment.second] = Int.MIN_VALUE
+                if (successful) {
+                    if (optInstances.containsKey(experiment.second)) {
+                        if (optInstances[experiment.second]!! < experiment.first) {
+                            optInstances[experiment.second] = experiment.first
+                        }
                     } else {
                         optInstances[experiment.second] = experiment.first
                     }
+                } else if (!optInstances.containsKey(experiment.second)) {
+                    optInstances[experiment.second] = Int.MIN_VALUE
                 }
         }
     }