diff --git a/csound-expression-opcodes.cabal b/csound-expression-opcodes.cabal
--- a/csound-expression-opcodes.cabal
+++ b/csound-expression-opcodes.cabal
@@ -1,5 +1,5 @@
 Name:          csound-expression-opcodes
-Version:       0.0.2
+Version:       0.0.3
 Cabal-Version: >= 1.6
 License:       BSD3
 License-file:  LICENSE
diff --git a/src/Csound/Typed/Opcode/MathematicalOperations.hs b/src/Csound/Typed/Opcode/MathematicalOperations.hs
--- a/src/Csound/Typed/Opcode/MathematicalOperations.hs
+++ b/src/Csound/Typed/Opcode/MathematicalOperations.hs
@@ -100,8 +100,8 @@
 -- >  birnd (x) (init- or control-rate only)
 --
 -- csound doc: <http://www.csounds.com/manual/html/birnd.html>
-birnd :: SigOrD a => a -> a
-birnd b1 = fromGE $ f <$> toGE b1
+birnd :: SigOrD a => a -> SE a
+birnd b1 = fmap ( fromGE . return) $ SE $ (depT =<<) $ lift $ f <$> toGE b1
     where f a1 = opr1k "birnd" a1
 
 -- | 
@@ -110,8 +110,8 @@
 -- >  rnd (x) (init- or control-rate only)
 --
 -- csound doc: <http://www.csounds.com/manual/html/rnd.html>
-rnd :: SigOrD a => a -> a
-rnd b1 = fromGE $ f <$> toGE b1
+rnd :: SigOrD a => a -> SE a
+rnd b1 = fmap ( fromGE . return) $ SE $ (depT =<<) $ lift $ f <$> toGE b1
     where f a1 = opr1k "rnd" a1
 
 -- Opcode Equivalents of Functions.
diff --git a/src/Csound/Typed/Opcode/SignalGenerators.hs b/src/Csound/Typed/Opcode/SignalGenerators.hs
--- a/src/Csound/Typed/Opcode/SignalGenerators.hs
+++ b/src/Csound/Typed/Opcode/SignalGenerators.hs
@@ -1154,7 +1154,7 @@
 -- csound doc: <http://www.csounds.com/manual/html/expsega.html>
 expsega ::  [D] -> Sig
 expsega b1 = Sig $ f <$> mapM unD b1
-    where f a1 = setRate Kr $ opcs "expsega" [(Kr, repeat Ir), (Ar, repeat Ir)] (a1 ++ [1, last a1])
+    where f a1 = opcs "expsega" [(Ar, repeat Ir)] (a1 ++ [1, last a1])
 
 -- | 
 -- Trace a series of exponential segments between specified
@@ -1166,7 +1166,7 @@
 -- csound doc: <http://www.csounds.com/manual/html/expsegb.html>
 expsegb ::  [D] -> Sig
 expsegb b1 = Sig $ f <$> mapM unD b1
-    where f a1 = setRate Kr $ opcs "expsegb" [(Kr, repeat Ir), (Ar, repeat Ir)] (a1 ++ [1, last a1])
+    where f a1 = opcs "expsegb" [(Kr, repeat Ir), (Ar, repeat Ir)] (a1 ++ [1, last a1])
 
 -- | 
 -- An exponential segment generator operating at a-rate with
@@ -1416,9 +1416,9 @@
 -- > kres  transegr  ia, idur, itype, ib [, idur2] [, itype] [, ic] ...
 --
 -- csound doc: <http://www.csounds.com/manual/html/transegr.html>
-transegr ::  [D] -> D -> D -> Sig
-transegr b1 b2 b3 = Sig $ f <$> mapM unD b1 <*> unD b2 <*> unD b3
-    where f a1 a2 a3 = setRate Kr $ opcs "transegr" [(Kr, repeat Ir), (Ar, repeat Ir)] (a1 ++ [1, 0, last a1, a2, a3])
+transegr ::  [D] -> D -> D -> D -> Sig
+transegr b1 b2 b3 b4 = Sig $ f <$> mapM unD b1 <*> unD b2 <*> unD b3 <*> unD b4
+    where f a1 a2 a3 a4 = setRate Kr $ opcs "transegr" [(Kr, repeat Ir), (Ar, repeat Ir)] (a1 ++ [1, 0, last a1, a2, a3, a4])
 
 -- Envelope Generators.
 
