diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py
index 5e1866da5aae6d0152f6b42acfac575baf50b350..f333cbe3ca646fa393556ff4a87e03920204fb25 100644
--- a/scapy/asn1/asn1.py
+++ b/scapy/asn1/asn1.py
@@ -20,6 +20,9 @@ class RandASN1Object(RandField):
         o = random.choice(self.objlist)
         if issubclass(o, ASN1_INTEGER):
             return o(int(random.gauss(0,1000)))
+        elif issubclass(o, ASN1_IPADDRESS):
+            z = RandIP()._fix()
+            return o(z)
         elif issubclass(o, ASN1_STRING):
             z = int(random.expovariate(0.05)+1)
             return o("".join([random.choice(self.chars) for i in range(z)]))
diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py
index 371274bf66950de660f393b0f5ddf7094c5507c0..1e66ffd7dc5ad98fb18fe40d06c9cc4efddef0d3 100644
--- a/scapy/asn1/ber.py
+++ b/scapy/asn1/ber.py
@@ -233,7 +233,7 @@ class BERcodec_NULL(BERcodec_INTEGER):
         if i == 0:
             return chr(cls.tag)+"\0"
         else:
-            return super(cls,cls).enc(i)
+            return BERcodec_INTEGER.enc(i)
 
 class BERcodec_SEP(BERcodec_NULL):
     tag = ASN1_Class_UNIVERSAL.SEP
@@ -260,6 +260,12 @@ class BERcodec_T61_STRING (BERcodec_STRING):
 class BERcodec_IA5_STRING(BERcodec_STRING):
     tag = ASN1_Class_UNIVERSAL.IA5_STRING
 
+class BERcodec_NUMERIC_STRING(BERcodec_STRING):
+    tag = ASN1_Class_UNIVERSAL.NUMERIC_STRING
+
+class BERcodec_VIDEOTEX_STRING(BERcodec_STRING):
+    tag = ASN1_Class_UNIVERSAL.VIDEOTEX_STRING
+
 class BERcodec_IPADDRESS(BERcodec_STRING):
     tag = ASN1_Class_UNIVERSAL.IPADDRESS