--- a/inst/@dataframe/dataframe.m
+++ b/inst/@dataframe/dataframe.m
@@ -32,11 +32,15 @@
   %# @item unquot: a logical switch telling wheter or not strings should
   %# be unquoted before storage, default = true;
   %# @item sep: the elements separator, default '\t,'
+  %# @item conv: some regexp to convert each field. This must be a
+  %# two-elements cell array containing regexprep() second (@var{PAT})
+  %# and third (@var{REPSTR}) arguments. In order to replace ',' by '.',
+  %# use "@{',', '.'@}". In this case, the default separator is adjusted to '\t;'
   %# @end itemize
   %# The remaining data are concatenated (right-appended) to the existing ones.
   %# @end deftypefn
 
-  %% Copyright (C) 2009-2012 Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
+  %% Copyright (C) 2009-2014 Pascal Dupuis <cdemills@gmail.com>
   %%
   %% This file is part of Octave.
   %%
@@ -107,8 +111,8 @@
 endif
 
 %# default values
-seeked = ''; trigger = ''; unquot = true; sep = "\t,"; cmt_lines = [];
-conv_regexp = {}; datefmt = ''; verbose = false;
+seeked = ''; trigger = ''; unquot = true; default_sep = "\t,"; sep = "";
+cmt_lines = []; conv_regexp = {}; datefmt = ''; verbose = false;
 
 if (length (varargin) > 0)      %# extract known arguments
   indi = 1;
@@ -148,16 +152,16 @@
           df._name{2} = genvarname (df._name{2});
           df._over{2}(1, 1:length (df._name{2})) = false;
           varargin(indi:indi+1) = [];
-        case 'seeked',
+        case 'seeked'
           seeked = varargin{indi + 1};
           varargin(indi:indi+1) = [];
-        case 'trigger',
+        case 'trigger'
           trigger = varargin{indi + 1};
           varargin(indi:indi+1) = [];
-        case 'unquot',
+        case 'unquot'
           unquot = varargin{indi + 1};
           varargin(indi:indi+1) = [];
-        case 'sep',
+        case 'sep'
           sep = varargin{indi + 1};
           varargin(indi:indi+1) = [];
         case 'conv'
@@ -181,6 +185,15 @@
       indi = indi + 1;    %# skip it
     endif         
   endwhile
+endif
+
+if (isempty (sep))
+  sep = default_sep;
+  if (~isempty (conv_regexp))
+    if (any (~cellfun (@isempty, (strfind (conv_regexp, ',')))))
+      sep = "\t;"; %# locales where ',' is used as decimal separator
+    endif
+  endif
 endif
 
 if (~isempty (datefmt))