diff --git a/notebooks/Pysim/DTBlock.py b/notebooks/Pysim/DTBlock.py
index 587df4a80fe156be7390977042bcdee7d3e43dbd..8e7861b7fbeb9b37af6847334fcfa571877a6384 100644
--- a/notebooks/Pysim/DTBlock.py
+++ b/notebooks/Pysim/DTBlock.py
@@ -273,6 +273,7 @@ class DTStateSpace(DTBlock):
     def __init__(self,inp,out,A,B,C,D,xo,Ts):                
         super(DTStateSpace, self).__init__()
         self.Ts = Ts
+        self.xo = xo
         self.ninput = len(inp)
         self.noutput = len(out)
         self.nstate = len(A)
@@ -291,15 +292,26 @@ class DTStateSpace(DTBlock):
             self.outpos[i] = out[i]
         for i in range(0,self.nstate):
             self.x[i] = xo[i]
-            self.xo[i] = xo[i]
         
     def updatediscrete(self):
         for i in range(0,self.noutput):
             self.y[i] = 0
             for j in range(0,self.nstate):
-                self.y[i] = self.y[i] + self.C[j]*self.x[j]
+                if self.C.ndim == 1:
+                    self.y[i] = self.y[i] + self.C[j]*self.x[j]
+                elif self.C.ndim == 2:
+                    #prevent [ValueError: setting an array element with a sequence.] for 2 dimensional self.C:
+                    self.y[i] = self.y[i] + self.C[i][j]*self.x[j]
+                else:
+                    print("WARNING: Can not handle self.C with dimension "+str(self.C.ndim))
             for j in range(0,self.ninput):
-                self.y[i] = self.y[i] +self.D[j]*self.u[j]
+                if self.C.ndim == 1:
+                    self.y[i] = self.y[i] + self.D[j]*self.u[j]
+                elif self.C.ndim == 2:
+                    #prevent [ValueError: setting an array element with a sequence.] for 2 dimensional self.C:
+                    self.y[i] = self.y[i] + self.D[i][j]*self.u[j]
+                else:
+                    print("WARNING: Can not handle self.D with dimension "+str(self.C.ndim))
         xn = numpy.zeros((self.nstate)) 
         for i in range (0,self.nstate):
             for j in range (0,self.ninput):