diff -urp bubblemon-dockapp-1.46/bubblemon.c bubblemon-dockapp-1.46-pis/bubblemon.c
--- bubblemon-dockapp-1.46/bubblemon.c	2003-10-01 02:37:32.000000000 +0200
+++ bubblemon-dockapp-1.46-pis/bubblemon.c	2006-09-10 18:25:40.000000000 +0200
@@ -130,6 +130,10 @@ int cpu_enabled = 1;
 int memscreen_enabled = 1;
 int memscreen_megabytes = 0;
 #endif				/* ENABLE_MEMSCREEN */
+#ifdef ENABLE_PIS_MODE
+int pis_mode = 0;
+int duck_phase[2] = { 11, 11 };
+#endif				/* ENABLE_PIS_MODE */
 
 #define INT_VAL 0
 #define DOUBLE_VAL 1
@@ -267,6 +271,11 @@ static void print_usage(void)
 	    " -p\tuse alternative color scheme in memory info screen\n"
 	    " -k\tdisplay memory and swap statistics in megabytes\n"
 #endif
+#ifdef ENABLE_PIS_MODE
+            " -P\tenable PiS mode!\n"
+	    " -1\tset duck 1 phase (step delay)\n"
+	    " -2\tset duck 2 phase\n"
+#endif /* ENABLE_PIS_MODE */
 	    " -h\tdisplay this help\n",
 	    options /* this is the global static string with compiled features */
     );
@@ -320,6 +329,10 @@ int main(int argc, char **argv)
     strcat(options, "MEMSCREEN ");
     strcat(execute, "pmk");
 #endif				/* ENABLE_MEMSCREEN */
+#ifdef ENABLE_PIS_MODE
+    strcat(options, "PIS ");
+    strcat(execute, "P1:2:");
+#endif				/* ENABLE_PIS_MODE */
 
     /* command line options */
     while ((ch = getopt(argc, argv, execute)) != -1) {
@@ -379,6 +392,20 @@ int main(int argc, char **argv)
 	    memscreen_megabytes = 1;
 	    break;
 #endif				/* ENABLE_MEMSCREEN */
+#ifdef ENABLE_PIS_MODE
+        case 'P':
+	    pis_mode = 1;
+	    break;
+
+	case '1':
+	    duck_phase[0] = atoi(optarg);
+	    break;
+	    
+	case '2':
+	    duck_phase[1] = atoi(optarg);
+	    break;
+	    
+#endif				/* ENABLE_PIS_MODE */
 	default:
 	    print_usage();
 	    exit(-1);
@@ -1391,9 +1418,9 @@ static int animate_correctly(void)
 
 static void duck_swimmer(int posy)
 {
-    static int tx = -19;
-    static int rp;
-    static int rev = 1;
+    static int tx[2] = { -19, 58 };
+    static int rp[2];
+    static int rev[2] = { 1, 0 };
     static int upsidedown = 0;
 
 #ifdef UPSIDE_DOWN_DUCK
@@ -1408,24 +1435,42 @@ static void duck_swimmer(int posy)
 	    posy += 10;
     }
 #endif
-    if (rp++ < 10) {
-	duck_set(tx, posy, animate_correctly(), rev, upsidedown);
-	return;
-    }
 
-    rp = 0;
-    if (!rev) {
-	if (tx-- < -18) {
-	    tx = -18;
-	    rev = 1;
-	}
-    } else {
-	if (tx++ > 57) {
-	    tx = 57;
-	    rev = 0;
-	}
+    if (rp[0]++ >= duck_phase[0]) {
+	    rp[0] = 0;
+	    if (!rev[0]) {
+		if (tx[0]-- < -18) {
+		    tx[0] = -18;
+		    rev[0] = 1;
+		}
+	    } else {
+		if (tx[0]++ > 57) {
+		    tx[0] = 57;
+		    rev[0] = 0;
+		}
+	    }
+    }
+#ifdef ENABLE_PIS_MODE
+    if (pis_mode && (rp[1]++ >= duck_phase[1])) {
+	    rp[1] = 0;
+	    if (!rev[1]) {
+		if (tx[1]-- < -18) {
+		    tx[1] = -18;
+		    rev[1] = 1;
+		}
+	    } else {
+		if (tx[1]++ > 57) {
+		    tx[1] = 57;
+		    rev[1] = 0;
+		}
+	    }
     }
-    duck_set(tx, posy, animate_correctly(), rev, upsidedown);
+#endif /* ENABLE_PIS_MODE */
+
+    duck_set(tx[0], posy, animate_correctly(), rev[0], upsidedown);
+#ifdef ENABLE_PIS_MODE
+    if (pis_mode) duck_set(tx[1], posy, animate_correctly(), rev[1], upsidedown);
+#endif /* ENABLE_PIS_MODE */
 }
 #endif				/* ENABLE_DUCK */
 
diff -urp bubblemon-dockapp-1.46/Makefile bubblemon-dockapp-1.46-pis/Makefile
--- bubblemon-dockapp-1.46/Makefile	2003-10-04 02:22:07.000000000 +0200
+++ bubblemon-dockapp-1.46-pis/Makefile	2006-09-06 01:59:58.000000000 +0200
@@ -5,6 +5,7 @@ EXTRA += -DENABLE_MEMSCREEN
 EXTRA += -DKERNEL_26
 # EXTRA += -DKDE_DOCKAPP
 # EXTRA += -DUPSIDE_DOWN_DUCK
+EXTRA += -DENABLE_PIS_MODE
 
 # where to install this program
 PREFIX = /usr/local

