diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index e7cabb5..62fa88b 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -26,6 +26,9 @@
   protected RfbPlayer player;
   protected Button playButton;
   protected Button pauseButton;
+  protected TextField posText;
+
+  protected int lastPos = -1;
 
   ButtonPanel(RfbPlayer player) {
     this.player = player;
@@ -41,6 +44,10 @@
     pauseButton.setEnabled(false);
     add(pauseButton);
     pauseButton.addActionListener(this);
+
+    posText = new TextField(4);
+    posText.setEditable(false);
+    add(posText);
   }
 
   public void setMode(int mode) {
@@ -68,6 +75,19 @@
     player.setMode(mode);
   }
 
+  public void setPos(int pos) {
+    if (pos != lastPos) {
+      lastPos = pos;
+      char[] zeroes = {'0', '0', '0', '0'};
+      String text = String.valueOf(pos);
+      if (text.length() < 4) {
+	text = new String(zeroes, 0, 4 - text.length()) + text;
+      }
+      posText.setText(text);
+      posText.setCaretPosition(text.length());
+    }
+  }
+
   //
   // Event processing.
   //
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index fab854b..59418d9 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -101,6 +101,11 @@
   // Methods providing additional functionality.
   //
 
+  public int getPos()
+  {
+    return (int)(timeOffset / 1000);
+  }
+
   public void resumeReading()
   {
     startTime = System.currentTimeMillis() - timeOffset;
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 58d4d64..741736e 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -194,6 +194,10 @@
     }
   }
 
+  public void updatePos() {
+    buttonPanel.setPos(fbsStream.getPos());
+  }
+
   //
   // readParameters() - read parameters from the html source or from the
   // command line.  On the command line, the arguments are just a sequence of
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index 58d24de..f421df5 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -208,6 +208,8 @@
     zlibInflater = new Inflater();
     tightInflaters = new Inflater[4];
 
+    player.updatePos();
+
     // Main dispatch loop.
 
     while (true) {
@@ -482,6 +484,8 @@
 	throw new IOException("Unknown RFB message type " + msgType);
       }
 
+      player.updatePos();
+
       if (player.getMode() == player.MODE_STOPPED) {
 	throw new EOFException("Playback stopped");
       }
