diff --git a/casinoCaseStudyBroken/Casino.java b/casinoCaseStudyAdjusted/Casino.java
index 0f50cfd..2390539 100644
--- a/casinoCaseStudyBroken/Casino.java
+++ b/casinoCaseStudyAdjusted/Casino.java
@@ -49,12 +49,11 @@ public class Casino {
     }
 
     // Remove money from pot
-    @Transition(name = REMOVE_FROM_POT, source = IDLE, target = IDLE,
-        /* With this guard, cannot establish component invariant pot >= 0. It is not provable that funds <= pot
-          (even though we know that the operator ensures this is the case)
-         */
-        guard = IS_OPERATOR)
-    @Transition(name = REMOVE_FROM_POT, source = GAME_AVAILABLE, target = GAME_AVAILABLE, guard = IS_OPERATOR)
+    @Transition(name = REMOVE_FROM_POT, source = IDLE, target = IDLE, 
+        // If we add a guard that checks if the funds can actually be removed, then VerCors can prove the component invariant again.
+        guard = "IS_OPERATOR && ENOUGH_FUNDS"
+        )
+    @Transition(name = REMOVE_FROM_POT, source = GAME_AVAILABLE, target = GAME_AVAILABLE, guard = "IS_OPERATOR && ENOUGH_FUNDS")
     public void removeFromPot(@Data(name = OPERATOR) Integer sender, @Data(name = INCOMING_FUNDS) int funds) {
         pot = pot - funds;
         System.out.println("CASINO" + id + ": " + funds +
diff --git a/casinoCaseStudyBroken/Main.java b/casinoCaseStudyAdjusted/Main.java
index a733f0b..ba649b1 100644
--- a/casinoCaseStudyBroken/Main.java
+++ b/casinoCaseStudyAdjusted/Main.java
@@ -1,8 +1,8 @@
 /*
-This version of the JavaBIP casino case study has an obvious problem: the operator decides how much to withdraw, but
-after deciding that the casino can decide a bet, which might reduce the pot. After that, it might not be possible for
-the operator to withdraw that much, and the model does not account for that.
+This version of the casino case study adjusts the contracts, by including wherever needed that the pot needs to be big
+enough. This fixes verification problems, at the cost of introducing a deadlock.
 */
+
 package casino;
 
 import akka.actor.ActorSystem;
diff --git a/casinoCaseStudyBroken/Operator.java b/casinoCaseStudyAdjusted/Operator.java
index 66db192..b8f583f 100644
--- a/casinoCaseStudyBroken/Operator.java
+++ b/casinoCaseStudyAdjusted/Operator.java
@@ -32,10 +32,10 @@ public class Operator {
 
     @Transition(name = CREATE_GAME, source = WORKING, target = WORKING, requires = "newPot >= 0")
     @Transition(name = CREATE_GAME, source = PUT_FUNDS, target = PUT_FUNDS, requires = "newPot >= 0")
-    @Transition(name = CREATE_GAME, source = WITHDRAW_FUNDS, target = WITHDRAW_FUNDS, requires = "newPot >= 0")
+    @Transition(name = CREATE_GAME, source = WITHDRAW_FUNDS, target = WITHDRAW_FUNDS, requires = "newPot >= 0", guard = SAFE_GAME_STEP)
     @Transition(name = DECIDE_BET, source = WORKING, target = WORKING, requires = "newPot >= 0")
     @Transition(name = DECIDE_BET, source = PUT_FUNDS, target = PUT_FUNDS, requires = "newPot >= 0")
-    @Transition(name = DECIDE_BET, source = WITHDRAW_FUNDS, target = WITHDRAW_FUNDS, requires = "newPot >= 0")
+    @Transition(name = DECIDE_BET, source = WITHDRAW_FUNDS, target = WITHDRAW_FUNDS, requires = "newPot >= 0", guard = SAFE_GAME_STEP)
     public void gameStep(@Data(name = AVAILABLE_FUNDS) int newPot) {
         this.pot = newPot;
         System.out.println("OPERATOR" + id + ": making one step in the game");
@@ -60,13 +60,19 @@ public class Operator {
         System.out.println("OPERATOR" + id + ": added " + amountToMove + " to pot, wallet: " + wallet);
     }
 
-    @Transition(name = REMOVE_FROM_POT, source = WITHDRAW_FUNDS, target = WORKING)
+    @Transition(name = REMOVE_FROM_POT, source = WITHDRAW_FUNDS, target = WORKING, requires = "amountToMove <= newPot")
     public void removeFromPot (@Data(name = AVAILABLE_FUNDS) int newPot) {
         wallet += amountToMove;
         this.pot = newPot - amountToMove;
         System.out.println("OPERATOR" + id + ": removed " + amountToMove + " from pot, wallet: " + wallet);
     }
 
+    @Pure
+    @Guard(name = SAFE_GAME_STEP)
+    public boolean safeGameStep(@Data(name = AVAILABLE_FUNDS) int newPot) {
+        return amountToMove <= newPot;
+    }
+
     @Pure
     @Guard(name = ENOUGH_FUNDS)
     public boolean haveMoney() {
diff --git a/casinoCaseStudyBroken/casinoBroken.json b/casinoCaseStudyAdjusted/casinoAdjusted.json
similarity index 91%
rename from casinoCaseStudyBroken/casinoBroken.json
rename to casinoCaseStudyAdjusted/casinoAdjusted.json
index 5e2cd9a..794e44e 100644
--- a/casinoCaseStudyBroken/casinoBroken.json
+++ b/casinoCaseStudyAdjusted/casinoAdjusted.json
@@ -99,13 +99,13 @@
           "name": "REMOVE_FROM_POT",
           "source": "IDLE",
           "target": "IDLE",
-          "guard": "IS_OPERATOR"
+          "guard": "IS_OPERATOR && ENOUGH_FUNDS"
         },
         "results": {
           "precondition": "proven",
-          "componentInvariant": "not proven",
-          "stateInvariant": "not proven",
-          "postcondition": "not proven"
+          "componentInvariant": "proven",
+          "stateInvariant": "proven",
+          "postcondition": "proven"
         }
       },
       {
@@ -113,13 +113,13 @@
           "name": "REMOVE_FROM_POT",
           "source": "GAME_AVAILABLE",
           "target": "GAME_AVAILABLE",
-          "guard": "IS_OPERATOR"
+          "guard": "IS_OPERATOR && ENOUGH_FUNDS"
         },
         "results": {
           "precondition": "proven",
-          "componentInvariant": "not proven",
-          "stateInvariant": "not proven",
-          "postcondition": "not proven"
+          "componentInvariant": "proven",
+          "stateInvariant": "proven",
+          "postcondition": "proven"
         }
       },
       {
@@ -216,13 +216,14 @@
         "signature": {
           "name": "CREATE_GAME",
           "source": "WITHDRAW_FUNDS",
-          "target": "WITHDRAW_FUNDS"
+          "target": "WITHDRAW_FUNDS",
+          "guard": "SAFE_GAME_STEP"
         },
         "results": {
           "precondition": "proven",
           "componentInvariant": "proven",
-          "stateInvariant": "not proven",
-          "postcondition": "not proven"
+          "stateInvariant": "proven",
+          "postcondition": "proven"
         }
       },
       {
@@ -255,13 +256,14 @@
         "signature": {
           "name": "DECIDE_BET",
           "source": "WITHDRAW_FUNDS",
-          "target": "WITHDRAW_FUNDS"
+          "target": "WITHDRAW_FUNDS",
+          "guard": "SAFE_GAME_STEP"
         },
         "results": {
           "precondition": "proven",
           "componentInvariant": "proven",
-          "stateInvariant": "not proven",
-          "postcondition": "not proven"
+          "stateInvariant": "proven",
+          "postcondition": "proven"
         }
       },
       {
@@ -312,9 +314,9 @@
         },
         "results": {
           "precondition": "proven",
-          "componentInvariant": "not proven",
-          "stateInvariant": "not proven",
-          "postcondition": "not proven"
+          "componentInvariant": "proven",
+          "stateInvariant": "proven",
+          "postcondition": "proven"
         }
       }
     ]
diff --git a/casinoCaseStudyBroken/pom.xml b/casinoCaseStudyAdjusted/pom.xml
index 7833a93..004444c 100644
--- a/casinoCaseStudyBroken/pom.xml
+++ b/casinoCaseStudyAdjusted/pom.xml
@@ -4,7 +4,7 @@
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>org.javabip</groupId>
-  <artifactId>org.javabip.examples.casino.broken</artifactId>
+  <artifactId>org.javabip.examples.casino.adjusted</artifactId>
   <version>0.1.0-SNAPSHOT</version>
 
   <dependencies>
