diff --git a/ATxCommon/Serializables/ServiceStatus.cs b/ATxCommon/Serializables/ServiceStatus.cs
index 66e8b8c43d9a5e54dc11ce347796b29504c1c0ab..11536b1043c8a4a810c89e11ea4bd44c2f8e801d 100644
--- a/ATxCommon/Serializables/ServiceStatus.cs
+++ b/ATxCommon/Serializables/ServiceStatus.cs
@@ -32,6 +32,8 @@ namespace ATxCommon.Serializables
         private long _transferredBytesCompleted;
         private long _transferredBytesCurrentFile;
 
+        private int _currentTransferPercent;
+
 
         #region constructor, serializer and deserializer
 
@@ -44,6 +46,7 @@ namespace ATxCommon.Serializables
             _transferInProgress = false;
             _transferredBytesCompleted = 0;
             _transferredBytesCurrentFile = 0;
+            _currentTransferPercent = 0;
         }
 
         public void Serialize() {
@@ -254,6 +257,18 @@ namespace ATxCommon.Serializables
             }
         }
 
+        /// <summary>
+        /// The progress of the current transfer in percent.
+        /// </summary>
+        public int CurrentTransferPercent {
+            get { return _currentTransferPercent; }
+            set {
+                _currentTransferPercent = value;
+                Log.Trace("CurrentTransferPercent was updated ({0}).", value);
+                Serialize();
+            }
+        }
+
         #endregion getter / setter methods
         
 
diff --git a/ATxService/RoboCommand.cs b/ATxService/RoboCommand.cs
index 3c6000058f519184320dd77a79d65e52604ffe3e..df740f19113101e56964afdf02ced8834c342a48 100644
--- a/ATxService/RoboCommand.cs
+++ b/ATxService/RoboCommand.cs
@@ -159,6 +159,7 @@ namespace ATxService
             _transferState = TxState.Stopped;
             _status.TransferredBytesCompleted = 0;
             _status.TransferredBytesCurrentFile = 0;
+            _status.CurrentTransferPercent = 0;
             _txCurFileSize = 0;
             _txCurFileProgress = 0;
             _roboCommand.Dispose();
@@ -180,12 +181,14 @@ namespace ATxService
 
             _txCurFileProgress = progress;
             _status.TransferredBytesCurrentFile = (long) (_txCurFileSize * e.CurrentFileProgress / 100);
-            var overallProgress = ((double)(_status.TransferredBytesCompleted + _status.TransferredBytesCurrentFile) /
-                                   _status.CurrentTransferSize) * 100;
-            Log.Info("Current transfer at {0:0}%", overallProgress);
+            // NOTE: the (double) is required to make the division work on float which can then 
+            // eventually be cast into an (int) after multiplying it by 100:
+            _status.CurrentTransferPercent = (int)((_status.TransferredBytesCompleted + _status.TransferredBytesCurrentFile) * 100 /
+                                   _status.CurrentTransferSize);
+            Log.Info("Current transfer at {0}%", _status.CurrentTransferPercent);
             Log.Trace("Tx progress: complete [{0}] - current [{1}] - combined {2:0}%",
                 _status.TransferredBytesCompleted, _status.TransferredBytesCurrentFile,
-                overallProgress);
+                _status.CurrentTransferPercent);
             Log.Trace("Current file transfer progress {0}%", progress);
         }