From 4fddaf6db08a17caa9012114e80d7494186e28b1 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Mon, 14 Dec 2020 11:24:54 +0100
Subject: [PATCH] Allow negative default values

---
 dynamixel/model/h42_20_s300_r.py    | 2 +-
 dynamixel/model/h42_20_s300_r_a.py  | 2 +-
 dynamixel/model/h54_100_s500_r.py   | 2 +-
 dynamixel/model/h54_100_s500_r_a.py | 2 +-
 dynamixel/model/h54_200_s500_r.py   | 2 +-
 dynamixel/model/h54_200_s500_r_a.py | 2 +-
 dynamixel/model/l42_10_s300_r.py    | 2 +-
 dynamixel/model/l54_30_s400_r.py    | 2 +-
 dynamixel/model/l54_30_s500_r.py    | 2 +-
 dynamixel/model/l54_50_s290_r.py    | 2 +-
 dynamixel/model/l54_50_s500_r.py    | 2 +-
 dynamixel/model/m42_10_s260_r.py    | 2 +-
 dynamixel/model/m42_10_s260_r_a.py  | 2 +-
 dynamixel/model/m54_40_s250_r.py    | 2 +-
 dynamixel/model/m54_40_s250_r_a.py  | 2 +-
 dynamixel/model/m54_60_s250_r.py    | 2 +-
 dynamixel/model/m54_60_s250_r_a.py  | 2 +-
 dynamixel/model/ph42_020_s300_r.py  | 2 +-
 dynamixel/model/ph54_100_s500_r.py  | 2 +-
 dynamixel/model/ph54_200_s500_r.py  | 2 +-
 dynamixel/model/pm42_010_s260_r.py  | 2 +-
 dynamixel/model/pm54_040_s250_r.py  | 2 +-
 dynamixel/model/pm54_060_s250_r.py  | 2 +-
 tools/html2py.py                    | 6 +++++-
 24 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/dynamixel/model/h42_20_s300_r.py b/dynamixel/model/h42_20_s300_r.py
index 27543df..e2a93bd 100644
--- a/dynamixel/model/h42_20_s300_r.py
+++ b/dynamixel/model/h42_20_s300_r.py
@@ -21,7 +21,7 @@ class H42_20_S300_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=465),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=10300),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=151875),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-151875),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/h42_20_s300_r_a.py b/dynamixel/model/h42_20_s300_r_a.py
index 6b9af01..2ad325a 100644
--- a/dynamixel/model/h42_20_s300_r_a.py
+++ b/dynamixel/model/h42_20_s300_r_a.py
@@ -24,7 +24,7 @@ class H42_20_S300_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10765),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2920),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=303454),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-303454),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/h54_100_s500_r.py b/dynamixel/model/h54_100_s500_r.py
index 3513769..83ac1ba 100644
--- a/dynamixel/model/h54_100_s500_r.py
+++ b/dynamixel/model/h54_100_s500_r.py
@@ -21,7 +21,7 @@ class H54_100_S500_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=310),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=17000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=250961),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-250961),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/h54_100_s500_r_a.py b/dynamixel/model/h54_100_s500_r_a.py
index 8ce2b33..752154d 100644
--- a/dynamixel/model/h54_100_s500_r_a.py
+++ b/dynamixel/model/h54_100_s500_r_a.py
@@ -24,7 +24,7 @@ class H54_100_S500_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10639),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2920),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=501433),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-501433),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/h54_200_s500_r.py b/dynamixel/model/h54_200_s500_r.py
index 185e233..62e1df2 100644
--- a/dynamixel/model/h54_200_s500_r.py
+++ b/dynamixel/model/h54_200_s500_r.py
@@ -21,7 +21,7 @@ class H54_200_S500_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=620),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=17000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=250961),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-250961),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/h54_200_s500_r_a.py b/dynamixel/model/h54_200_s500_r_a.py
index 3f33e20..fc7827d 100644
--- a/dynamixel/model/h54_200_s500_r_a.py
+++ b/dynamixel/model/h54_200_s500_r_a.py
@@ -24,7 +24,7 @@ class H54_200_S500_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=9982),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2900),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=501433),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-501433),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/l42_10_s300_r.py b/dynamixel/model/l42_10_s300_r.py
index 6dada2b..8d37735 100644
--- a/dynamixel/model/l42_10_s300_r.py
+++ b/dynamixel/model/l42_10_s300_r.py
@@ -21,7 +21,7 @@ class L42_10_S300_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=987),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=None),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=2048),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-2047),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=30),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/l54_30_s400_r.py b/dynamixel/model/l54_30_s400_r.py
index 18373b0..cd6a8e0 100644
--- a/dynamixel/model/l54_30_s400_r.py
+++ b/dynamixel/model/l54_30_s400_r.py
@@ -21,7 +21,7 @@ class L54_30_S400_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=100),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=9000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=144197),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-144197),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/l54_30_s500_r.py b/dynamixel/model/l54_30_s500_r.py
index 8cdcd3b..46496dc 100644
--- a/dynamixel/model/l54_30_s500_r.py
+++ b/dynamixel/model/l54_30_s500_r.py
@@ -21,7 +21,7 @@ class L54_30_S500_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=100),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=9000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=180692),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-180692),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/l54_50_s290_r.py b/dynamixel/model/l54_50_s290_r.py
index 0c7c060..71ef15c 100644
--- a/dynamixel/model/l54_50_s290_r.py
+++ b/dynamixel/model/l54_50_s290_r.py
@@ -21,7 +21,7 @@ class L54_50_S290_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=120),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=8000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=103846),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-103846),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/l54_50_s500_r.py b/dynamixel/model/l54_50_s500_r.py
index 0aeac95..2e1c66e 100644
--- a/dynamixel/model/l54_50_s500_r.py
+++ b/dynamixel/model/l54_50_s500_r.py
@@ -21,7 +21,7 @@ class L54_50_S500_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=120),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=8000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=180692),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-180692),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/m42_10_s260_r.py b/dynamixel/model/m42_10_s260_r.py
index 7038cff..091b34a 100644
--- a/dynamixel/model/m42_10_s260_r.py
+++ b/dynamixel/model/m42_10_s260_r.py
@@ -21,7 +21,7 @@ class M42_10_S260_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=300),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=8000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=131593),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-131593),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/m42_10_s260_r_a.py b/dynamixel/model/m42_10_s260_r_a.py
index b11180e..777612b 100644
--- a/dynamixel/model/m42_10_s260_r_a.py
+++ b/dynamixel/model/m42_10_s260_r_a.py
@@ -24,7 +24,7 @@ class M42_10_S260_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10867),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2600),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=262931),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-262931),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/m54_40_s250_r.py b/dynamixel/model/m54_40_s250_r.py
index 9e4b8a3..c61fb69 100644
--- a/dynamixel/model/m54_40_s250_r.py
+++ b/dynamixel/model/m54_40_s250_r.py
@@ -21,7 +21,7 @@ class M54_40_S250_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=120),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=8000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=125708),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-125708),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/m54_40_s250_r_a.py b/dynamixel/model/m54_40_s250_r_a.py
index c17da62..8af7100 100644
--- a/dynamixel/model/m54_40_s250_r_a.py
+++ b/dynamixel/model/m54_40_s250_r_a.py
@@ -24,7 +24,7 @@ class M54_40_S250_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=11037),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2840),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=251173),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-251173),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/m54_60_s250_r.py b/dynamixel/model/m54_60_s250_r.py
index 670c061..9f3b012 100644
--- a/dynamixel/model/m54_60_s250_r.py
+++ b/dynamixel/model/m54_60_s250_r.py
@@ -21,7 +21,7 @@ class M54_60_S250_R(Servo):
         'torque_limit': RWRow(name='torque_limit', address=30, size=2, default=180),
         'velocity_limit': RWRow(name='velocity_limit', address=32, size=4, default=8000),
         'max_position_limit': RWRow(name='max_position_limit', address=36, size=4, default=125708),
-        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=40, size=4, default=-125708),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(44, 48)], size=1),
         'shutdown': RWRow(name='shutdown', address=48, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(49, 561, 2)], size=2)
diff --git a/dynamixel/model/m54_60_s250_r_a.py b/dynamixel/model/m54_60_s250_r_a.py
index 28c2c27..2f84cba 100644
--- a/dynamixel/model/m54_60_s250_r_a.py
+++ b/dynamixel/model/m54_60_s250_r_a.py
@@ -24,7 +24,7 @@ class M54_60_S250_R_A(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=11145),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2830),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=251173),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-251173),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/ph42_020_s300_r.py b/dynamixel/model/ph42_020_s300_r.py
index fbb70f0..653ef4f 100644
--- a/dynamixel/model/ph42_020_s300_r.py
+++ b/dynamixel/model/ph42_020_s300_r.py
@@ -25,7 +25,7 @@ class PH42_020_S300_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10765),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2920),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=303454),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-303454),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/ph54_100_s500_r.py b/dynamixel/model/ph54_100_s500_r.py
index d9e8a73..c62ad73 100644
--- a/dynamixel/model/ph54_100_s500_r.py
+++ b/dynamixel/model/ph54_100_s500_r.py
@@ -25,7 +25,7 @@ class PH54_100_S500_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10639),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2920),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=501433),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-501433),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/ph54_200_s500_r.py b/dynamixel/model/ph54_200_s500_r.py
index 8aff141..a08eb9b 100644
--- a/dynamixel/model/ph54_200_s500_r.py
+++ b/dynamixel/model/ph54_200_s500_r.py
@@ -25,7 +25,7 @@ class PH54_200_S500_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=9982),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2900),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=501433),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-501433),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=52),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/pm42_010_s260_r.py b/dynamixel/model/pm42_010_s260_r.py
index b82f5d9..19cb220 100644
--- a/dynamixel/model/pm42_010_s260_r.py
+++ b/dynamixel/model/pm42_010_s260_r.py
@@ -25,7 +25,7 @@ class PM42_010_S260_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=10867),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2600),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=262931),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-262931),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/pm54_040_s250_r.py b/dynamixel/model/pm54_040_s250_r.py
index db44d55..aeaa22e 100644
--- a/dynamixel/model/pm54_040_s250_r.py
+++ b/dynamixel/model/pm54_040_s250_r.py
@@ -25,7 +25,7 @@ class PM54_040_S250_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=11037),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2840),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=251173),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-251173),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/dynamixel/model/pm54_060_s250_r.py b/dynamixel/model/pm54_060_s250_r.py
index 19ba4c0..6a71a04 100644
--- a/dynamixel/model/pm54_060_s250_r.py
+++ b/dynamixel/model/pm54_060_s250_r.py
@@ -25,7 +25,7 @@ class PM54_060_S250_R(Servo):
         'acceleration_limit': RWRow(name='acceleration_limit', address=40, size=4, default=11145),
         'velocity_limit': RWRow(name='velocity_limit', address=44, size=4, default=2830),
         'max_position_limit': RWRow(name='max_position_limit', address=48, size=4, default=251173),
-        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=None),
+        'min_position_limit': RWRow(name='min_position_limit', address=52, size=4, default=-251173),
         'external_port_mode': IndirectRow(name='external_port_mode', addresses=[range(56, 60)], size=1),
         'shutdown': RWRow(name='shutdown', address=63, size=1, default=58),
         'indirect_address': IndirectRow(name='indirect_address', addresses=[range(168, 424, 2)], size=2)
diff --git a/tools/html2py.py b/tools/html2py.py
index 15bda5a..89171fc 100755
--- a/tools/html2py.py
+++ b/tools/html2py.py
@@ -86,13 +86,17 @@ class ParsedRow(Row):
         if not (m and address.isdigit()):
             raise ValueError((name, address, size, access, default,
                               ranges, unit))
+        def int_or_none(s):
+            if s.isdigit() or s[0] == '-' and s[1:].isdigit():
+                return(int(s))
+            return None
         super(ParsedRow, self).__init__(
             name=m.group(1),
             index=m.group(2),
             address=int(address),
             size=int(size),
             access=set(access),
-            default=int(default) if default.isdigit() else None,
+            default=int_or_none(default),
             ranges=ranges,
             unit=unit)
 
-- 
GitLab