diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 222c519..0a67090 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -47,7 +47,7 @@
 
     add(new Label(" Speed:"));
     timeScaleText = new TextField(5);
-    timeScaleText.setText("1.0");
+    timeScaleText.setText(String.valueOf(player.getSpeed()));
     add(timeScaleText);
     timeScaleText.addActionListener(this);
   }
@@ -87,7 +87,11 @@
     } else if (evt.getSource() == posText) {
       player.setPos(Integer.parseInt(posText.getText()));
     } else if (evt.getSource() == timeScaleText) {
-      player.setSpeed(Double.parseDouble(timeScaleText.getText()));
+      double speed = Double.parseDouble(timeScaleText.getText());
+      if (speed <= 0.0)
+	speed = 1.0;
+      timeScaleText.setText(String.valueOf(speed));
+      player.setSpeed(speed);
     }
   }
 }
diff --git a/java/src/com/tightvnc/rfbplayer/README b/java/src/com/tightvnc/rfbplayer/README
index 1661652..67a28d2 100644
--- a/java/src/com/tightvnc/rfbplayer/README
+++ b/java/src/com/tightvnc/rfbplayer/README
@@ -58,6 +58,15 @@
     coalesce several small updates into one drawing operation, improving CPU
     usage. Set this parameter to 0 to disable deferred updates.
 
+--> "Speed"
+
+    Value: positive fixed-point or floating-point number.
+    Default: "1.0".
+
+    Sets playback speed where 1 is normal speed, 2 is double speed,
+    and 0.5 is half speed etc. Both number formats like 0.2 and 2e-1
+    are acceptable.
+
 
 Licensing Terms
 ===============
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 55ac568..a47220a 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -60,6 +60,7 @@
 
   String sessionURL;
   long initialTimeOffset;
+  double playbackSpeed;
   boolean showControls;
   int deferScreenUpdates;
 
@@ -161,6 +162,7 @@
 	try {
 	  setPaused(true);
 	  fbsStream.setTimeOffset(initialTimeOffset);
+	  fbsStream.setSpeed(playbackSpeed);
 	  vc.processNormalProtocol();
 	} catch (EOFException e) {
 	  initialTimeOffset = 0;
@@ -191,7 +193,12 @@
     }
   }
 
+  public double getSpeed() {
+    return playbackSpeed;
+  }
+
   public void setSpeed(double speed) {
+    playbackSpeed = speed;
     fbsStream.setSpeed(speed);
   }
 
@@ -216,6 +223,11 @@
 
     sessionURL = readParameter("URL", true);
     initialTimeOffset = readLongParameter("Position", 0);
+    if (initialTimeOffset < 0)
+      initialTimeOffset = 0;
+    playbackSpeed = readDoubleParameter("Speed", 1.0);
+    if (playbackSpeed <= 0.0)
+      playbackSpeed = 1.0;
 
     showControls = true;
     String str = readParameter("Show Controls", false);
@@ -272,6 +284,17 @@
     return result;
   }
 
+  double readDoubleParameter(String name, double defaultValue) {
+    String str = readParameter(name, false);
+    double result = defaultValue;
+    if (str != null) {
+      try {
+	result = Double.parseDouble(str);
+      } catch (NumberFormatException e) { }
+    }
+    return result;
+  }
+
   //
   // fatalError() - print out a fatal error message.
   //
