diff --git a/src/Text/Pandoc/Writers/Ms.hs b/src/Text/Pandoc/Writers/Ms.hs
index 0ed7a8a64..97c23f24d 100644
--- a/src/Text/Pandoc/Writers/Ms.hs
+++ b/src/Text/Pandoc/Writers/Ms.hs
@@ -245,13 +245,17 @@ blockToMs opts (Table _ blkCapt specs thead tbody tfoot) =
       aligncode AlignDefault = "l"
   in do
   caption' <- inlineListToMs' opts caption
-  let iwidths = if all (== 0) widths
-                   then repeat ""
-                   else map (T.pack . printf "w(%0.1fn)" . (70 *)) widths
+  let isSimple = all (== 0) widths
+  let totalWidth = 70
   -- 78n default width - 8n indent = 70n
   let coldescriptions = literal $ T.unwords
-                        (zipWith (\align width -> aligncode align <> width)
-                        alignments iwidths) <> "."
+                        (zipWith (\align width -> aligncode align <>
+                                    if width == 0
+                                       then ""
+                                       else T.pack $
+                                              printf "w(%0.1fn)"
+                                              (totalWidth * width))
+                        alignments widths) <> "."
   colheadings <- mapM (blockListToMs opts) headers
   let makeRow cols = literal "T{" $$
                      vcat (intersperse (literal "T}\tT{") cols) $$
@@ -260,13 +264,25 @@ blockToMs opts (Table _ blkCapt specs thead tbody tfoot) =
                         then empty
                         else makeRow colheadings $$ char '_'
   body <- mapM (\row -> do
-                         cols <- mapM (blockListToMs opts) row
+                         cols <- mapM (\(cell, w) ->
+                                   (if isSimple
+                                       then id
+                                       else (literal (".nr LL " <>
+                                              T.pack (printf "%0.1fn"
+                                                (w * totalWidth))) $$)) <$>
+                                   blockListToMs opts cell) (zip row widths)
                          return $ makeRow cols) rows
   setFirstPara
   return $ literal ".PP" $$ caption' $$
            literal ".na" $$ -- we don't want justification in table cells
+           (if isSimple
+               then ""
+               else ".nr LLold \\n[LL]") $$
            literal ".TS" $$ literal "delim(@@) tab(\t);" $$ coldescriptions $$
            colheadings' $$ vcat body $$ literal ".TE" $$
+           (if isSimple
+               then ""
+               else ".nr LL \\n[LLold]") $$
            literal ".ad"
 
 blockToMs opts (BulletList items) = do
diff --git a/test/command/7288.md b/test/command/7288.md
new file mode 100644
index 000000000..e94aeeeb3
--- /dev/null
+++ b/test/command/7288.md
@@ -0,0 +1,40 @@
+```
+% pandoc -f rst -t ms
+.. list-table::
+   :widths: 50 50
+   :header-rows: 1
+
+   * - Left
+     - Right
+   * - Long text that should be easy to break up into multiple lines
+     - Another long text that should be easy to break up into multiple lines
+
+       Bar
+^D
+.PP
+.na
+.nr LLold \n[LL]
+.TS
+delim(@@) tab(	);
+lw(35.0n) lw(35.0n).
+T{
+Left
+T}	T{
+Right
+T}
+_
+T{
+.nr LL 35.0n
+.LP
+Long text that should be easy to break up into multiple lines
+T}	T{
+.nr LL 35.0n
+.PP
+Another long text that should be easy to break up into multiple lines
+.PP
+Bar
+T}
+.TE
+.nr LL \n[LLold]
+.ad
+```
diff --git a/test/tables.ms b/test/tables.ms
index 7337db25f..21183a5eb 100644
--- a/test/tables.ms
+++ b/test/tables.ms
@@ -143,6 +143,7 @@ Multiline table with caption:
 .PP
 Here\[cq]s the caption. It may span multiple lines.
 .na
+.nr LLold \n[LL]
 .TS
 delim(@@) tab(	);
 cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n).
@@ -157,30 +158,40 @@ Default aligned
 T}
 _
 T{
+.nr LL 10.5n
 First
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 12.0
 T}	T{
+.nr LL 24.5n
 Example of a row that spans multiple lines.
 T}
 T{
+.nr LL 10.5n
 Second
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 5.0
 T}	T{
+.nr LL 24.5n
 Here\[cq]s another one.
 Note the blank line between rows.
 T}
 .TE
+.nr LL \n[LLold]
 .ad
 .LP
 Multiline table without caption:
 .PP
 .na
+.nr LLold \n[LL]
 .TS
 delim(@@) tab(	);
 cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n).
@@ -195,25 +206,34 @@ Default aligned
 T}
 _
 T{
+.nr LL 10.5n
 First
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 12.0
 T}	T{
+.nr LL 24.5n
 Example of a row that spans multiple lines.
 T}
 T{
+.nr LL 10.5n
 Second
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 5.0
 T}	T{
+.nr LL 24.5n
 Here\[cq]s another one.
 Note the blank line between rows.
 T}
 .TE
+.nr LL \n[LLold]
 .ad
 .LP
 Table without column headers:
@@ -255,27 +275,37 @@ T}
 Multiline table without column headers:
 .PP
 .na
+.nr LLold \n[LL]
 .TS
 delim(@@) tab(	);
 cw(10.5n) lw(9.6n) rw(11.4n) lw(24.5n).
 T{
+.nr LL 10.5n
 First
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 12.0
 T}	T{
+.nr LL 24.5n
 Example of a row that spans multiple lines.
 T}
 T{
+.nr LL 10.5n
 Second
 T}	T{
+.nr LL 9.6n
 row
 T}	T{
+.nr LL 11.4n
 5.0
 T}	T{
+.nr LL 24.5n
 Here\[cq]s another one.
 Note the blank line between rows.
 T}
 .TE
+.nr LL \n[LLold]
 .ad