Index: src/evaluate_move.c
===================================================================
--- src/evaluate_move.c	(revision 6)
+++ src/evaluate_move.c	(working copy)
@@ -602,6 +602,11 @@
             player[act_player].winner=0;
             player[other_player].winner=1;
         }
+        if(player[act_player].score==player[other_player].score) {
+            player[act_player].winner=1;
+            player[other_player].winner=1;
+        }
+
     }
 
     printf("EVAL done\n");
Index: src/billard3d.c
===================================================================
--- src/billard3d.c	(revision 6)
+++ src/billard3d.c	(working copy)
@@ -1760,8 +1760,17 @@
                   options_gamemode==options_gamemode_tournament &&
                   (player[0].winner || player[1].winner) )
                {
-                   tournament_evaluate_last_match( &tournament_state );
-                   tournament_state.wait_for_next_match=1;
+                   if ( player[0].winner == player[1].winner )
+                   { // Draw
+                       restart_game_common();
+                       player[act_player].winner=0;
+                       player[other_player].winner=0;
+                   }
+                   else
+                   {
+                       tournament_evaluate_last_match( &tournament_state );
+                       tournament_state.wait_for_next_match=1;
+                   }
                }
            } else {
                int old_cueball_ind;
@@ -3654,6 +3663,7 @@
     create_walls( &walls );
     create_scene( &balls );
     g_shot_due=1;
+    snooker_state.to_play=SN_PLAY_RED;
 }
 
 
