diff --git a/plugins/openoffice/openoffice-read.c b/plugins/openoffice/openoffice-read.c
index 6b8129e..d69d25d 100644
--- a/plugins/openoffice/openoffice-read.c
+++ b/plugins/openoffice/openoffice-read.c
@@ -134,6 +134,7 @@ static struct {
 /* Formula Type */
 typedef enum {
 	FORMULA_OPENFORMULA = 0,
+	FORMULA_OPENFORMULA_TILDE,
 	FORMULA_OLD_OPENOFFICE,
 	FORMULA_MICROSOFT,
 	NUM_FORMULAE_SUPPORTED,
@@ -2194,6 +2195,10 @@ oo_load_convention (OOParseState *state, GsfXMLIn *xin, OOFormula type)
 		convs->sheet_name_sep	= '!'; /* Note that we are using this also as a marker*/
 		                               /* in the function handlers */
 		break;
+	case FORMULA_OPENFORMULA_TILDE:
+		convs = oo_conventions_new (state, xin);
+		convs->arg_sep		= '~';
+		break;
 	case FORMULA_OPENFORMULA:
 	default:
 		convs = oo_conventions_new (state, xin);
@@ -2237,6 +2242,9 @@ oo_expr_parse_str (GsfXMLIn *xin, char const *str,
 						       flags, type, NULL);
 			g_free (test);
 		}
+		if ((texpr == NULL) && (type == FORMULA_OPENFORMULA)) {
+			texpr = oo_expr_parse_str_try (xin, str, pp, flags, FORMULA_OPENFORMULA_TILDE, NULL);
+		}
 		if (texpr == NULL)
 			oo_warning (xin, _("Unable to parse '%s' ('%s')"),
 				    str, perr.err->message);
